EF Code First 和数据库视图

3

我刚开始学习使用Code First制作数据库视图,并且正在决定是否应该使用它们。

这里,Ladislav建议使用NotMapped继承父表和Db-View(我的视图仅添加子实体的总和)...但这如何与CF Migrations一起使用?我真的想使用它们。

此外...导航属性会在Db-View实体上工作吗?

有没有办法直接将数据保存到Db-View实体(及其表)中?

1个回答

8
如果您想使用代码优先和迁移,就不应该使用视图。视图是数据库“逻辑”结构,而代码优先不是创建数据库逻辑的方法。使用代码优先时,应该使用投影,这也在链接的答案中提到。
迁移将无法检测与您的视图相关的更改。您将不得不手动编写所有视图迁移代码。
如果您想使用视图,您应该使用数据库优先(=无迁移),并使用EDMX或代码映射进行映射。
此外……导航属性会在Db-View实体上工作吗?
这是唯一一种情况,其中代码映射提供比EDMX更好的支持。即使在数据库中不存在关系,您也可以在模型中定义关系(但您的数据库必须确保数据完整性)。理论上,EDMX也可以实现,但需要手动更改EDMX。
有没有办法直接将数据保存到Db-View实体(及其表)中?
是的,但您的视图必须是可更新的。我认为具有聚合值的视图是不可更新的。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接