如果我们使用带有代码优先方法的实体框架,则可以在给定路径上创建数据库(Sql Server compact)

本文关键字:路径 创建 数据库 compact Server Sql 代码 我们 框架 实体 方法 | 更新日期: 2023-09-27 18:08:59

我对实体框架有点困惑,我想使用代码优先的方法;事实上,我想写我的数据库表是如何通过类定义组成的。

主要的问题是,我需要创建一个数据库(或打开它)通过动态地选择它的路径(用户可以选择什么数据库打开,可以创建一个新的,当他想要的)。我选择了Sql server compact来实现这一点,但是我仍然不明白如何使用代码优先的方法在这种情况下,因为我不明白如何选择在哪里应该用代码优先的方法创建数据库,如果可能的话。

谁能解释我做错了什么,并建议不同的路线,如果有的话?由于

如果我们使用带有代码优先方法的实体框架,则可以在给定路径上创建数据库(Sql Server compact)

几天前我也遇到了同样的问题。下面是我如何让它工作的:

在应用程序启动代码中添加以下内容:

using System.Data.Entity.Database;
// ...
DbDatabase.SetInitializer(new MyDbInitializer());
DbDatabase.DefaultConnectionFactory = new SqlCeConnectionFactory(
    "System.Data.SqlServerCe.4.0", 
    @"C:'Path'To'", 
    @"Data Source=C:'Path'To'DbFile.sdf");

初始化器应该是这样的:

using System.Data.Entity.Database;
public class MyDbInitializer : CreateDatabaseIfNotExists<MyDbContext>
{
    protected override void Seed(MyDbContext context)
    {
        // create some sample data
    }
}

如果CreateDatabaseIfNotExists不是你想要的东西,你可以使用更多类型的初始化器,或者你也可以创建你自己的。更多信息可以在这里找到:

http://blog.oneunicorn.com/2011/03/31/configuring-database-initializers-in-a-config-file/