ASP.NET MVC中的数据访问3

问题描述:

在实际的ASP.NET MVC应用程序中创建数据访问层的建议方式是什么?是EF吗? Ef Code First? NHibernate的?任何其他想法?ASP.NET MVC中的数据访问3

谢谢&问候

+0

NET ORMs:http://*.com/questions/1377236/nhibernate-entity-framework-active-records-or-linq2sql/ –

有没有推荐的方式。

我喜欢EF代码第一次这样做,因为

  • 的源代码是很干净,容易阅读
  • 这是很容易简单地改变ConnectionString中,并生成一个新的数据库,如果不是已经存在
  • 如果您的模型已更改(无需重新创建数据库),则易于迁移数据库使用EntityFramework.SqlMigrations
  • 如果您的数据库已存在,则可以使用Entity Framework Power Tools从您现有的数据库中生成模型和数据库上下文

尝试LINQ,我看到的大多数MVC产品都使用LINQ。

+3

LINQ是一个与数据访问层交互的工具。它不会创建图层本身。 –

+0

EF Code First对现实生活中重度使用的网站有多强大? – Bill

+0

LINQ是一种编程模型,它将查询作为一流的概念引入到任何的Microsoft .NET语言中。 – RickAndMSFT

如果您偏​​爱MSFT工具并希望成为“现代”,那么EF Code First可能就是开始的地方。值得一读的例子是:https://github.com/NuGet/NuGetGallery

我喜欢使用Model First,因为它允许我在我看来最*地进行设计和实现。它也使得改变数据库设计变得非常容易。

+0

我也首先喜欢模特,但我认为我们是少数派(不是大多数人必然是正确的)。我认为你可以从通过Model进行一些工作中受益。 – RickAndMSFT

没有,*充满了沿着各种路线走下坡路的人们,所以无论你做出哪种选择,你都可以得到帮助。

最好的建议,尝试使用几个似乎脱颖而出的方法做一些小探索网站。

+0

不幸的是,真正的障碍并不倾向于在小型测试项目上显示,而是在真实项目上显示真实数据。 – Jan

+0

不,但大多数方法都有各种障碍....没有完美,但它确实告诉你发展的风格是否符合你的想法。但是,是的,有一些并发症在蔓延! –

+0

对每个原型类型都是一个好主意 - 即使你不会发现你在真实应用中遇到的很多问题。 – RickAndMSFT

MS上的MVC大师(写MVC的人)似乎都在使用实体框架。话说回来,你可以使用任何ORM(或真的是你想要的任何数据访问技术)作为MVC犯规实际上是在所有指定有关访问数据

+0

1.并非所有MS的MVC人都只使用EF。 2.并非所有的MVC大师都为MS工作(实际上大多数都不)。你是对的,我们不告诉人们使用什么。 – RickAndMSFT

这一切都取决于你的需要的方式事情:

  • NHibernate的是一个大的社区比较成熟的ORM

  • 实体框架现在正很好的支持,你还可以找到大量信息(check Julie Lerman blog

两者均支持从数据库生成代码。

代码优先:允许您从域模型创建数据库模式。如果你不想打扰数据库,这很好。 NHibernate也可以做到这一点。

为了帮助您决定使用哪种方式实体框架

enter image description here

Source

还有很多其他伟大的ORM:

Subsonic

*'s ORM Dapper如果性能是一个重要的标准有一个小笨蛋在网站上的hmark