ORM框架与数据库中的直接查询进行比较

时间:2011-08-15 09:13:05

标签: c# database hibernate nhibernate entity-framework

我想写一个仓库程序。

任何人都可以指导我使用框架进行数据库层。

之前我使用过实体框架,但我并不喜欢它,因为它会引发很多未知错误。

有人建议使用nhibernate或任何其他框架,或者您认为如果我使用直接查询或存储过程,它会更可靠和更好吗?

3 个答案:

答案 0 :(得分:4)

我认为ORM不是解决此类问题的最佳选择。

ORM中的“O”代表“对象”。您不希望仅仅为了将数据移动到仓库中而创建对象模型。

ORM更多的是为了方便开发人员:允许面向对象的程序员忘记中间层上基于实例的对象与数据库端基于集合的关系之间的区别。 SQL由ORM工具生成。它可能不是您想要移动数据的。

我认为你真正需要深入研究的三个字母是ETL:Extract-Transfer-Load。这是用于将数据从事务数据存储移动到数据仓库的更典型的方法。

答案 1 :(得分:1)

实体框架会抛出通常来自数据库的错误,例如约束等。但是,您也可以使用实体框架直接执行SQL和存储过程调用。

你还应该将你的头衔更正为ORM而不是OMR?

答案 2 :(得分:0)

我认为对ORM框架过于信任。它们存在性能缓慢等问题。使用Linq-to-sql是一个建议,更高级的查询作为存储过程完成。这是非常直接和稳定的。 或者使用SubSonic。事实上,如果您愿意,可以使用大量存储过程。没有魔法子弹 - 每个解决方案都有它的优点和缺点。