我正在开发的 ASP MVC 4 网站上使用 Entity Framework 5。因为我使用的是共享主机,它对我使用的数据库数量收费,所以我想在我的生产站点附近运行一个测试站点。
我有两个问题:
1)我使用代码优先和数据库迁移。迁移类似乎将模式dbo嵌入到表的名称中。
如何根据测试/生产标志更改架构
2) 如何更改 EF 从中选择数据的架构?
谢谢你,伊多。
我正在开发的 ASP MVC 4 网站上使用 Entity Framework 5。因为我使用的是共享主机,它对我使用的数据库数量收费,所以我想在我的生产站点附近运行一个测试站点。
我有两个问题:
1)我使用代码优先和数据库迁移。迁移类似乎将模式dbo嵌入到表的名称中。
如何根据测试/生产标志更改架构
2) 如何更改 EF 从中选择数据的架构?
谢谢你,伊多。
迁移和 EF 都从映射中获取架构,因此如果要更改架构,则必须更新映射以使用:
modelBuilder.Entity<MyEntity>().ToTable("MyTable", "MySchema");
并控制MySchema
来自配置的值,但这确实是个坏主意。有一天,您忘记更改值并中断生产。使用本地数据库进行开发和测试。
如前所述:使用相同的数据库(结构上)进行开发、测试和生产。
模式的目标是对数据库对象进行分组,就像我们在 C# 中对命名空间所做的那样,或者简化数据库对象组的权限。不识别数据库阶段。通过将它们用于后者,如果不是不可能的话,您也更难适当地使用模式。例如,请参阅此MSDN 白皮书。
使用一些数据库名称约定来表明它们的目的要容易得多。