entity-framework - 如何为 Entity Framework 4.3 和 SQL Server Compact 4.0 创建 Bootstrap 类

标签 entity-framework nuget sql-server-ce nuget-package bootstrapping

(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 ”包裹

这两个包 (EFCodeFirstEFCodeFirst.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/

相关文章:

git - 从 GitHub 安装 nuget 包

.net - 将所有 Nuget 包从一个项目复制/粘贴(重新安装)到另一个项目的最快方法?

c# - 无法从 SQL Server Compact 获取输出

sql - 如何检查 SQL Server CE 数据库的索引?

c# - 我需要使用 Syncfusion Essential Studio 还是可以只使用 NuGet 包?

c# - 组合框和 System.Data.DataRowView

c# - 先EF数据库,重命名实体表名

c# - 如何在给定自引用表中的以下路由别名的情况下获取最后一个类别

entity-framework - 使用 Linq-to-Sql 还可以吗

c# - 有没有办法在 where 子句中访问私有(private)属性(property)?