2011-09-26 50 views
1

当我使用LINQ to SQL时,我是否被迫使用与数据库结构相同的对象?或者我可以为我的业务模型使用不同的建模结构吗?使用LINQ to SQL与自定义业务模型?

如果可能,我该如何做出这个改变?

+1

传递linq-to-sql实体类的实例或公开公开它们通常是一个坏主意,因为它们可能会附加到上下文。我相信的一般做法是创建与linq-to-sql实体具有相同属性的POCO,并使用类似于AutoMapper的东西来映射来自两组实体的映射。 –

回答

2

您可以创建自己的业务模型作为DTO类,并将这些内容复制到这些DTO类,从您的linq到sql对象。我们使用了T3模板(我不记得我在哪里得到了...你可以谷歌它)来生成DTO来节省编码时间,最初使用Automapper将L2S对象转换为DTO,但是,我们开始随机获取AutoMapperException没有线索。所以,对于我们所有的新代码,我们已经创建了帮助类来完成转换。这种方法的优点是,现在即使非.NET客户端也可以使用您的服务,因为DTO是平台通用的。

2

是的,LINQ to SQL总是直接与数据库一起工作。它始终是一对一映射。

这是使用Entity Framework的许多原因之一,它允许您针对实体模型进行编程,该模型不一定会与数据库结构一对一地映射。