EF代码优先和数据库视图

时间:2012-08-15 17:48:30

标签: entity-framework ef-code-first

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

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

另外......导航属性适用于Db-View Entity?

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

1 个答案:

答案 0 :(得分:8)

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

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

如果你想使用视图,你应该先做数据库(=没有迁移),然后用EDMX或代码映射映射它们。

  

另外......导航属性适用于Db-View Entity?

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

  

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

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