Business Logic对象是否应该了解其LINQ-to-SQL数据对象?

时间:2009-05-01 05:06:21

标签: linq-to-sql orm separation-of-concerns decoupling

我看过几个类似的问题,但我没有看到任何直接适用于我的问题,所以请原谅我,如果这是重复的话。

为了分离关注点,我试图以某种方式将我的业务对象与逻辑映射到.dbml文件中的LINQ to SQL数据对象(对于这个btw来说相当新)。它的外观虽然是我的业务对象需要知道相应的LINQ2SQL对象。我阅读this article关于尝试使用xml映射文件来尝试使用POCO,看起来这与我想要的类似,不同之处在于我没有从表到类的一对一映射,因为我需要创建一个额外的表的多对多关系。

我可以很好地将数据访问封装在我的业务逻辑中,这样使用我的业务对象的代码就不需要了解有关数据库的任何信息,但是业务层仍然与数据访问紧密耦合层,这样我就无法在不更改业务层对象或为不同数据提供者创建新业务层(实现相同接口)的情况下交换DAL。

如何解耦这些图层?

1 个答案:

答案 0 :(得分:2)

不确定您是否以某种方式与LINQ to SQL绑定,但您要完成的工作几乎是NHibernate中的默认设置。我建议看看NHibernate,看看它是否比LINQ to SQL更容易切换。

我发现打击工具几乎总是一个坏主意。