如何使用 SQL Server CE 4.0 实现 IDatabaseInitializer
我是 EF Code First 的新手。
我创建了 DbContext
的子类并添加了一些 DbSets
。
我创建了 DropCreateDatabaseAlways
的子类并在上下文中实现了以下内容,这是我的上下文的样子:
public class Context : DbContext
{
public Context() : base("Database") { }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
Database.DefaultConnectionFactory.CreateConnection("System.Data.SqlServerCe.4.0");
Database.SetInitializer(new DatabaseInitializer());
}
public DbSet<NameEntity> Names { get; set; }
public DbSet<Case> Cases { get; set; }
}
在运行以下命令并检查应用程序文件后,我没有看到生成的数据库:
public App() //App ctor
{
using (Models.Context context = new Models.Context())
{
}
}
我缺少什么?
I'm new to EF Code First.
I created a subclass of DbContext
and added some DbSets
.
I made subclass of DropCreateDatabaseAlways<MyContext>
and implemented the following in the context, here is what my context looks like:
public class Context : DbContext
{
public Context() : base("Database") { }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
Database.DefaultConnectionFactory.CreateConnection("System.Data.SqlServerCe.4.0");
Database.SetInitializer(new DatabaseInitializer());
}
public DbSet<NameEntity> Names { get; set; }
public DbSet<Case> Cases { get; set; }
}
After I run the following and check the apps files I don't see a generated database:
public App() //App ctor
{
using (Models.Context context = new Models.Context())
{
}
}
What am I missing?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您必须以某种方式强制 EF 创建数据库。可以通过以下方式完成:
Seed
操作不算数,因为Seed
是在数据库初始化后执行的,但您需要一些东西来触发初始化示例:
You must force EF somehow to create database. It can be done by:
Seed
operation doesn't count in this case becauseSeed
is executed after database is initialized but you need something to trigger initializationExample: