我喜欢 LINQ to SQL,但它生成的类似乎与它们存储的数据库紧密耦合,这似乎是一件坏事。
例如,使用 ye olde Northwind 数据库,如果我使用 Products 表创建 dbml,则 Product
类生成。我可以在任何其他层使用这个类,这一切都很好,但是如果我决定我宁愿使用普通的旧 ADO.NET(或切换数据库),我将不得不重新创建 Product
类,以及其他所有“模型”。
有没有解决的办法?还是单独创建对象模型,然后将表映射到它们?我已经尝试过提供的各种映射类,但还没有找到令人满意的答案。
最佳答案
所有这些答案,没有链接!也许我可以帮忙:
The attributes thing that damieng mentioned
The partial class thing that Marcus King mentioned
我曾多次经历过这个困难,最后我在上一个项目中所做的就是使用接口(interface)作为解决方案中所有不同项目之间共享的契约,并让部分类实现它。
[Table(Name="Products")]
public partial class Product: IProduct { }
是的,不幸的是,它需要一些反射魔法才能使其适用于 POCO 实现。
最后,如果你真的关心它,我会选择 NHibernate(我也不是很喜欢它),这正是 Garry Shulter 所描述的。
希望有帮助!
关于.net - LINQ to SQL 生成的对象可以解耦吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/222895/