Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 哪个ORM支持映射现有数据库?_Asp.net Mvc_Orm_Repository - Fatal编程技术网

Asp.net mvc 哪个ORM支持映射现有数据库?

Asp.net mvc 哪个ORM支持映射现有数据库?,asp.net-mvc,orm,repository,Asp.net Mvc,Orm,Repository,因此,我有一个分层的ASP.NET MVC概念验证应用程序,在表示关注点、业务逻辑和基础架构关注点之间有很好的分离。现在它是在假存储库(即针对静态IQueryable对象的LINQ查询)上运行的。我现在想创建一个功能强大的SQL存储库 也就是说,我不想简单地将它绑定到表和实体之间具有1-1映射的数据库中。这无法满足我希望解决的业务需求(与现有数据库的部分集成-不希望约定优于配置) 你对我应该考虑和/或避免哪些ORM /映射工具有什么建议吗? 你对我可以阅读的文章/书籍有什么建议来帮助我探讨这个话

因此,我有一个分层的ASP.NET MVC概念验证应用程序,在表示关注点、业务逻辑和基础架构关注点之间有很好的分离。现在它是在假存储库(即针对静态IQueryable对象的LINQ查询)上运行的。我现在想创建一个功能强大的SQL存储库

也就是说,我不想简单地将它绑定到表和实体之间具有1-1映射的数据库中。这无法满足我希望解决的业务需求(与现有数据库的部分集成-不希望约定优于配置)

你对我应该考虑和/或避免哪些ORM /映射工具有什么建议吗? 你对我可以阅读的文章/书籍有什么建议来帮助我探讨这个话题吗

在这种情况下,简单地使用参数化查询会更好吗?

听起来很适合您所寻找的内容。您将能够使您的存储库在HQL或使用API中调用查询,无论是哪种方式,您都可以访问数据库,并根据存储库的使用方式对数据进行调整。然而,要把一个方形的钉子塞进一个圆孔总是很困难的。因此,当您开始使用NHibernate时,会有很多很好的支持,祝您好运。

肯定会允许您:

  • 在物理数据库模式和概念模式之间进行映射,例如,将一个实体映射到多个表,或将多个表连接在一起形成一个业务实体

  • 从视图(而不是直接从表)获取数据

  • 使用存储过程(在需要和适当的情况下)对每个实体进行插入、更新和删除


正如您在问题中提到的,选择ORM是非常有争议的。不同的人会有不同的项目需求。我不太确定你会优先考虑什么。这是我自己尝试过的

NHibernate似乎是DotNet项目中最常用的ORM。我觉得这是一个典型的开源问题。它提供了这么多功能,但文档真的很糟糕。如果你有很多时间可以支配,你可以试一试

另一种选择是采用类似实体框架的方法。它很容易设置、启动和运行。对于版本4.0和CTP,有代码优先以及流畅映射和配置的规定。既然您已经说过希望将域模型分开,EF4将帮助您,因为它有概念模型的概念,这是映射层上的抽象

你可以参考下面我根据自己的经验写的博客的几个链接

除此之外,使用NHibernate可以提供一种与旧数据库部分集成的好方法,因为它可以根据需要构建不同程度的模式。例如,在对SQLite进行单元测试时,这种行为也很好。此外,映射可以用xml表示,而不像其他一些ORM那样冗长。这在您需要进行更改或遇到新用例时非常有用,特别是在涉及多态性的情况下。NHibernate还有一个流畅的配置插件,在重构时非常有用。如果模式包含许多表,那么维护手动映射可能会很烦人。NHibernate还支持自动映射和基于约定的应用程序。很抱歉,这是一个痛苦的问题,但这是有争议的和主观的,无法回答,因为它是3个完全独立的问题,是一个包含重复和有争议的主观和有争议的重复的重复(为什么是orms?、NHibernate/ef书籍?)。550929292206197一个更好的问题是“哪个ORM支持映射现有数据库?”@jfar:感谢您提供了改进这个问题的技巧。我认为讽刺的是,您认为EF4代码优先(主要记录在博客文章中)比NHibernate(也记录在博客文章中)有更好的文档。我真的很想相信EF4有更好的文档,因为微软有这样做的资源,但到目前为止,这不是我个人的经验。我同意迈克尔关于EF代码优先方法文档的观点。但与此同时,我们需要意识到这是一个CTP,我相信当RTM版本推出时,我们肯定会有更好的文档可用。我与NHibernate的个人经历有点令人失望。有些人认为,如果live stuff的可用文档非常少,那么我必须首先依靠其他资源来获得入门示例。正如jfar所暗示的,没有一个答案是正确的。然而,我选择这个,因为我没有认真考虑过EF4,在进一步研究之后,它看起来是一个可行的选择。