c# - ASP.NET MVC2 数据访问层

标签 c# asp.net-mvc-2 data-access-layer

对于一个中小型项目,我试图找出拥有域层和数据访问层的“理想”方式。我对耦合的看法更倾向于认为领域模型不应该与数据库层紧密耦合,换句话说,数据访问层实际上不应该了解有关领域对象的任何信息。

我一直在研究 Linq-to-sql,它想要使用它创建的自己的模型,因此它最终会非常紧密地耦合。虽然我喜欢在代码中使用 linq-to-sql 的方式,但我真的不喜欢它创建自己的域对象的方式。

我应该考虑哪些替代方案?我尝试使用 NHibernate,但我不喜欢我必须用来查询和获取不同对象的方式。老实说,我很喜欢 linq 的语法和使用方式,我只是不希望它与域对象如此紧密地耦合。

最佳答案

如果您不希望域与数据库紧密耦合,那么您的选择几乎是:

  1. NHibernate
  2. Entity Framework
正如您所发现的,Linq 2 Sql 会从数据库层生成代码,因此这是不可能的。 Subsonic 和 LLBLGen Pro 也是如此(我相信,如果我错了,请纠正我)。 Entity Framework 过去也属于这种情况,但版本 4 附带了“代码优先”支持,因此它绝对是一个选择。

NHibernate 和 Entity Framework 都支持 LINQ 查询,尽管 Entity Framework 的 LINQ 支持据称优于 NHibernate。我同意 HQL 和 Criteria 查询并不像 LINQ 那样优雅,但我有一种感觉,NHibernate 的 LINQ 支持将在 3.0 版本中得到极大改进。

关于c# - ASP.NET MVC2 数据访问层,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2748086/

相关文章:

c# - Entity Framework 5 删除问题 - 对象状态管理器问题

c# - 从蒙版文本框中解析文本

asp.net-mvc-2 - ASP.NET MVC session 超时和 TempData

javascript - 对通过 Javascript 写入屏幕的 Html 帮助程序进行编码

c# - OracleParameter.Size 有什么影响?

c# - 在unity3D中显示数学方程

c# - ASP.NET - 转换本地化数字

c# - 将 Delphi 7 数据访问移植到 C#

c# - 无法转换类型为 'System.Linq.GroupedEnumerable to type ' System.Collections.Generic.List 的对象

c# - 关于避免在此抽象上重复代码的任何提示?