实体框架和数据库逻辑

问题描述:

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

我会试着用另一种方式解释。你有一个称为类别的表。你有另一个称为元素的表。每个元素可以有多个类别,一个类别可以包含多个元素。对于每个类别我想计算有多少元素(这是一个简单的但想象这个计算有一个非常复杂的公式)。现在问题来了:

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

专业选择1:该计算是每个人都可以使用的。 对比选择1:视图不可更新。

专业人士选择2:该表是可更新的 对比选择2:该计算仅适用于符合.NET标准的系统。

dubts选择之一1:如何用实体框架来处理这个更新?导入视图并映射插入,更新,删除存储过程?

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

+0

绝对可以将存储过程绑定到EF中。 – 2010-05-11 11:22:01

+0

但这不是重点。想象一下另一个不支持.net框架的系统。如果您在数据库中使用视图,则其他系统可以使用视图来优化建模域。或者想象一下sqlserver作业,他们不能采用实体框架的优点。这是如何解决的? – 2010-05-11 11:39:32

+0

您也可以映射EF中的视图。我经常更愿意将这样的逻辑放在模型中描述,因为在移植到别处时不需要重写,但是您可以以任何方式进行。 – 2010-05-11 12:41:26

真的不明白你的意思......

其实你可以prolly使用可欣赏你的ORM,如果他们是可更新的...那么,关于使用ORM +程序? 你仍然可以在你的实体框架中使用你的数据库视图,并以“更友好的方式”得到一个模型。