因此,我有一个分层的ASP.NET MVC概念验证应用程序,可以很好地分离表示问题,业务逻辑和基础架构问题。现在它正在运行虚拟存储库(即针对静态IQueryable对象的LINQ查询)。我想现在创建一个功能齐全的SQL存储库。
也就是说,我不想简单地将它绑定到一个在表和实体之间具有1-1映射的数据库中。这不符合我希望解决的业务需求(与现有数据库的部分集成 - 没有希望约定优于配置)。
您对我应该考虑和/或避免的ORM /制图工具有什么建议吗? 您对我能看到的文章/书籍有什么建议可以帮助我解决这个问题吗?
在这种情况下简单地使用参数化查询会更好吗?
答案 0 :(得分:7)
Entity Framework in version 4肯定会允许你:
在物理数据库架构和概念架构之间建立映射,例如:将实体映射到多个表,或将几个表连接在一起形成单个业务实体
从视图中获取数据(而不是直接从表中获取)
对每个实体使用INSERT,UPDATE,DELETE存储过程(如果需要和适当)
答案 1 :(得分:4)
NHibernate听起来非常适合您所寻找的内容。您可以使用HQL或使用API调用查询库,无论是哪种方式,您都可以访问数据库并根据存储库的使用方式调整数据的形状。尽管如此,总是很难将方形钉固定在圆孔中。当你开始使用NHibernate时,SO有很多很好的支持,祝你好运。
答案 2 :(得分:1)
正如您在问题中所提到的,选择ORM是非常有争议的。不同的人会有不同的项目需求。我不确定什么会优先考虑你。这是我自己尝试过的。
NHibernate似乎是DotNet项目中最常用的ORM。我觉得它有一个典型的开源问题。它提供了很多功能,但文档真的很糟糕。如果你有足够的时间可以使用,你可以试一试。
另一种选择是寻找像Entity Framework这样的东西。它很容易设置和启动和运行。使用4.0版和CTP,首先需要代码,以及流畅的映射和配置。既然你已经说过要保持域模型分离,EF 4会对你有所帮助,因为它有一个概念模型的概念,它是映射层的抽象。
根据我的经验,您可以参考以下几个链接,了解我写的博客 http://nileshgule.blogspot.com/2010/08/entity-framework-hello-world.html http://nileshgule.blogspot.com/2010/09/nhibernate-code-first-approach-with.html http://nileshgule.blogspot.com/2010/09/entity-framework-first-query-using.html http://nileshgule.blogspot.com/2010/09/entity-framework-learning-series.html