LINQ to SQL生成的对象可以解耦吗?

swi*_*ams 11 .net architecture linq-to-sql

我喜欢LINQ to SQL,但似乎它生成的类与它们存储的数据库紧密耦合,这看起来像是一件坏事.

例如,使用旧的Northwind数据库,如果我使用Products表创建dbml,Product则会生成一个类.我可以在任何其他层使用此类,这一切都很好,但如果我决定使用普通的旧ADO.NET(或交换机数据库),我将不得不重新创建Product类,以及其他所有类"模型."

有没有解决的办法?或者单独创建对象模型,然后将表映射到它们?我已经玩过各种各样的地图类,但还没有找到满意的答案.

Zac*_*tes 6

所有这些答案,没有链接!也许我可以帮忙:

该死的提到的属性

Marcus King提到的部分类事物

我已经厌倦了这个困难了几次,我最后在上一个项目中做的是使用接口作为在解决方案中所有不同项目之间共享的契约,并让部分类实现它.

[Table(Name="Products")]
public partial class Product: IProduct { }
Run Code Online (Sandbox Code Playgroud)

是的,遗憾的是,它需要一些反思才能使其适用于POCO实施.

最后,如果你真正关心它,我会选择NHibernate(我也不喜欢它),这正是Garry Shulter所描述的.

希望有所帮助!