(TL;DR 版本是底部加粗的问题)
最初发布 Entity Framework 4.1 Code First 时(实际上是 CTP5 左右的时间),有一个 NuGet名为 EFCodeFirst
的包。这可以与另一个名为 EFCodeFirst.SqlServerCompact
的 NuGet 包结合使用,后者允许将 EF 与 SQL Server Compact 4.0 (SQL Server CE) 结合使用。
安装 EFCodeFirst.SqlServerCompact
包将搭建脚手架,或在 App_Start
文件夹中生成名为 SQLCEEntityFramework.cs
的“ Bootstrap ”类,该类将通过使用 WebActivator
设置诸如 EF 的 Database.DefaultConnectionFactory
以及为其他有用方法(初始化、播种数据库等)生成“ stub ”包裹
这两个包 (EFCodeFirst
和 EFCodeFirst.SqlServerCompact
) 现已弃用,似乎已被 EntityFramework
的等效包取代& EntityFramework.SqlServerCompact
目前都是 4.3.1 版本
我的问题是,在新项目中使用这些新包时,它们似乎没有创建“bootstraper”类来设置 EF 以在运行时使用 SQL Server Compact。当然,我可以从以前的项目中复制旧版本的类,但很高兴知道 NuGet 包仍然包含此功能(可能会随着时间的推移而更新)。
有什么方法可以获取 EFCodeFirst.SqlServerCompact
包的最新版本(撰写本文时为 4.3.1)以创建 SQLCEEntityFramework.cs
Bootstrap 类,安装时或安装后(可能通过 powershell 命令?)?
更新:
我刚刚注意到 a previous version of the EFCodeFirst.SqlServerCompact
NuGetPackage 仍然依赖于 WebActivator
包(由 Bootstrap 类利用)但是这种依赖性已从 latest version 中删除和 one immediately preceding the latest version .看起来生成 Bootstrap 类的功能已被删除,但为什么我想知道?
最佳答案
在 EF 4.1 中,让 Code First 按照约定(即不显式指定连接字符串)创建 SQL Server Compact 数据库的唯一方法是在代码中设置 DefaultConnectionFactory。这是有问题的,因为需要知道正在使用哪个数据库的工具(例如迁移)不知道此代码是否存在。)
在 EF 4.3 中,我们在 web.config 文件中添加了执行此操作的功能。 EntityFramework.SqlServerCompact 包通过将 SQL Conmpact 设置为 Web 配置中的默认连接工厂来利用它。因此它不需要使用 WebActivator 或使用代码来设置它。
如果您愿意,您仍然可以使用代码方法,但请注意,迁移之类的东西可能无法正常工作,我们鼓励您改用配置文件。
关于entity-framework - 如何为 Entity Framework 4.3 和 SQL Server Compact 4.0 创建 Bootstrap 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9698642/