2012-08-15 143 views
3

我刚开始用Code First查看数据库视图...并尝试决定是否应该使用它们。EF代码优先和数据库视图

Here Ladislav建议对表和Db-View使用NotMapped继承父项(我的视图只添加子实体的总和)......但是这对CF Migrations是如何工作的?我真的想用它们。

另外...导航属性将在Db-View实体上工作?

有什么办法可以直接将数据保存到Db-View实体(和它的表)吗?

回答

8

如果您想先使用代码并进行迁移,则不应使用视图。视图是数据库“逻辑”结构和代码首先不是创建数据库逻辑的方法。首先使用代码,您应该使用链接答案中提到的投影。

迁移将无法检测到与您的观点相关的更改。您必须手动编写所有视图的迁移代码。

如果你想使用视图,你应该首先执行数据库(=不迁移),并将它们映射到EDMX或代码映射。

另外...导航属性将适用于Db-View实体?

这是代码映射提供比EDMX更好的支持的唯一场景。即使数据库中不存在关系,也可以在模型中定义关系(但数据库必须确保数据完整性)。 EDMX在理论上也是可行的,但它需要手动更改EDMX。

有什么办法可以直接将数据保存到Db-View实体(和它的表)吗?

是的,但您的视图必须是可更新的。我不认为具有聚合值的视图是可更新的。

+0

谢谢,很好的回答!抱歉,我无法投票(低代表) – peter 2012-08-16 08:17:44