Entity framework 实体框架与数据库逻辑

Entity framework 实体框架与数据库逻辑,entity-framework,database-design,Entity Framework,Database Design,我有一个问题已经存在好几年了。正如您所知,实体框架是一种ORM工具,它试图将数据库建模为面向对象的访问模型。我看到的所有示例都直接查询到数据库表。那么,现在数据库中视图的角色是什么?。这些视图用于以更友好的方式对数据库建模,即多个物理表,一个逻辑表。例如,在存储过程上隐藏复杂的关系模型时,这是非常好的,因为查询存储过程中的视图要比在每个存储过程上反复复制查询联接容易得多。所以问题是,如果存储过程不能利用实体框架,为什么实体框架如此好 我将尝试用另一种方式解释这一点。您有一个名为category的

我有一个问题已经存在好几年了。正如您所知,实体框架是一种ORM工具,它试图将数据库建模为面向对象的访问模型。我看到的所有示例都直接查询到数据库表。那么,现在数据库中视图的角色是什么?。这些视图用于以更友好的方式对数据库建模,即多个物理表,一个逻辑表。例如,在存储过程上隐藏复杂的关系模型时,这是非常好的,因为查询存储过程中的视图要比在每个存储过程上反复复制查询联接容易得多。所以问题是,如果存储过程不能利用实体框架,为什么实体框架如此好

我将尝试用另一种方式解释这一点。您有一个名为category的表。您有另一个名为elements的表。每个元素可以分为多个类别,一个类别可以包含多个元素。对于每个类别,我想计算有多少个元素(这是一个简单的计算,但假设这个计算有一个非常复杂的公式)。现在问题来了:

选项1:使用此计算创建视图VCategory。 选项2:在实体框架中包含表类别,然后扩展类以包含计算

优点选择1:计算对每个人都有效。 Contras选项1:视图不可更新

优点选择2:表格是可更新的 Contras选项2:计算仅适用于.NET兼容系统

dubts on choice one 1:如何使用实体框架处理此更新?。使用存储过程?导入视图并映射插入、更新、删除


dubts on choice one 2:存储过程不能从实体框架中受益。如果数据库中的一个存储过程需要此计算,该怎么办?

我真的不明白您的意思

实际上,如果视图是可更新的,您可以在视图中使用orm。。。那么,如何使用orm+过程呢?
您仍然可以在实体框架中使用db视图,并且您将以“更友好的方式”获得模型。

您完全可以将存储过程绑定到EF中。但这不是重点。想象一下另一个不支持.net framework的系统。如果您在数据库中使用视图,那么其他系统可以利用使用视图的建模域。或者想象一下sqlserver作业,它们无法利用实体框架。如何解决此问题?您还可以在EF中映射视图。我通常更喜欢将您描述的逻辑放在模型中,因为在其他地方移植时不需要重新编写,但您可以用任何一种方式来完成。