我正在调整 MVCMusicStore 购物车。我希望使用 EntityFramework 重构数据库 - 而不是通过服务器资源管理器。
在我的模型文件夹中,我创建了一个新的 FooEntities
模型。
public class FooStoreEntities : DbContext
{
public DbSet<Foo> Foos { get; set; }
public DbSet<Category> Categories { get; set; }
public DbSet<FooMaker> FooMakers { get; set; }
public DbSet<Cart> Carts { get; set; }
public DbSet<Order> Orders { get; set; }
public DbSet<OrderDetail> OrderDetails { get; set; }
}
我还创建了额外的模型 Foo
, FooMaker
和 Category
.其他模型已存在于 MVCMusicStore 示例中。
我创建了一个 SampleFooData
继承自 DropCreateDatabaseIfModelChanges<FooStoreEntities>
的类并覆盖 seed
为新表播种的方法。
我更改了 Application_Start
Global.asax.cs
中的方法包含 System.Data.Entity.Database.SetInitializer(new FooStore.Models.SampleFooData());
在web.config
我有的文件:
<connectionStrings>
<add name="FooStoreEntities"
connectionString="Data Source=|DataDirectory|FooStore.sdf"
providerName="System.Data.SqlServerCe.4.0"/>
</connectionStrings>
在哪里FooStore.sdf
仍然包含来自 MVCMusicStore 应用程序的所有旧表。
当我执行网络应用程序时,它命中了 SetInitializer
断点但是它似乎没有创建 SampleFooData
对象并在数据库中创建新表。我错过了什么?或者有什么我不明白的基本知识吗?
最佳答案
它只会在您使用数据库上下文时创建:参见 Entity Framework Database.SetInitializer simply not working
你可以把
var ctx = new FooStoreEntities();
ctx.Database.Initialize(true);
在您在 Application_Start 中设置初始化程序的位置之后。
关于c# - 从代码中使用 EntityFramework 重构数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6371042/