gpt4 book ai didi

linq - NHibernate 与 LINQ to SQL

转载 作者:行者123 更新时间:2023-12-03 04:37:21 28 4
gpt4 key购买 nike

作为一个没有在实际项目中使用过这两种技术的人,我想知道是否有人知道这两种技术如何相辅相成以及它们的功能有多少重叠?

最佳答案

LINQ to SQL 强制您使用每类表模式。使用此模式的好处是它可以快速且轻松地实现,并且只需很少的努力就可以让您的域基于现有的数据库结构运行。对于简单的应用程序,这是完全可以接受的(通常甚至更好),但对于更复杂的应用程序,开发人员通常会建议使用 domain driven design模式而不是(这就是 NHibernate 所促进的)。

每类一个表模式的问题在于您的数据库结构对您的域设计有直接影响。例如,假设您有一个 Customers 表,其中包含以下列来保存客户的主要地址信息:

  • 街道地址
  • 城市
  • zip

现在,假设您还想添加客户邮寄地址的列,因此您将以下列添加到客户表中:

  • 邮寄街道地址
  • 邮寄城市
  • 邮寄状态
  • 邮件压缩

使用 LINQ to SQL,域中的 Customer 对象现在将具有这八列中每一列的属性。但是,如果您遵循域驱动设计模式,则可能会创建一个 Address 类,并让您的 Customer 类保存两个 Address 属性,一个用于邮寄地址,一个用于当前地址。

这是一个简单的示例,但它演示了每类表模式如何导致有点臭的域。最后,这取决于你。同样,对于只需要基本 CRUD(创建、读取、更新、删除)功能的简单应用程序,LINQ to SQL 因其简单性而成为理想选择。但我个人喜欢使用 NHibernate,因为它有利于更干净的域。

编辑:@lomaxx - 是的,我使用的示例很简单,可以进行优化以与 LINQ to SQL 很好地配合。我想尽可能保持基本的内容以阐明要点。但重点仍然是,在某些情况下,让数据库结构决定域结构是一个坏主意,或者至少会导致次优的 OO 设计。

关于linq - NHibernate 与 LINQ to SQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26971/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com