代码之家  ›  专栏  ›  技术社区  ›  Paul

ASP.NET MVC2数据访问层

  •  2
  • Paul  · 技术社区  · 15 年前

    对于一个中小型的项目,我试图找出什么是拥有域层和数据访问层的“理想”方法。我对耦合的看法倾向于域模型不应该与数据库层紧密耦合,换句话说,数据访问层不应该真正了解域对象。

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

    我应该考虑哪些选择?我试着使用nhibernate,但是我不喜欢查询和获取不同对象的方式。我真的很喜欢你使用linq的语法和方式,我只是不希望它与域对象紧密耦合。

    4 回复  |  直到 14 年前
        1
  •  3
  •   Kevin Pang    15 年前

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

    1. NHiBiNATE
    2. 实体框架

    正如您所发现的,linq 2 sql从数据库层生成代码,所以这是不可能的。亚音速和llblgen-pro也是如此(我相信,如果我错了,请纠正我)。实体框架也曾一度陷入困境,但版本4附带了“代码优先”支持,因此它绝对是一个选项。

    nhibernate和entity framework都支持linq查询,尽管entity framework的linq支持据说优于nhibernate的linq支持。我同意hql和criteria查询不如linq优雅,但我觉得nhibernate的linq支持将得到极大的改进。RSiON 3。

        2
  •  0
  •   Community CDub    8 年前

    我发布了一个类似问题的答案,可能会有所帮助。我可以在这里重复这一切,但我想我只需要给您指出答案,因为我建议使用相同类型的存储库模式来分离您的数据。

    MVC + Repository Pattern - Still depends on Data Model?

        3
  •  0
  •   DaveDev    15 年前

    可以使用linq to sql创建表示数据实体的类型。这些类几乎只是表示数据库中的表的类。在mvc项目中,您应该使用它们向业务层提供数据,从业务层开始定义业务实体,然后(在我看来,非常重要的是)定义您的表示模型。

        4
  •  0
  •   Lester    15 年前

    我知道你不太喜欢NHibernate,但如果你想再看一眼,就去看看 http://sharparchitecture.net/ . 他们在设计项目模板时做得非常好,同时正确地分离了关注点。