Linq to sql 使用dbml进行linq2sql查询有哪些优点或缺点?

Linq to sql 使用dbml进行linq2sql查询有哪些优点或缺点?,linq-to-sql,entities,Linq To Sql,Entities,我目前正在阅读Pro Asp.Net MVC,他们正在手动构建所有的linq2sql实体类,并使用linq映射属性映射它们。然而,我所看到的(来自谷歌搜索)谈论LINQ2SQL的其他人似乎都在使用可视化设计器来构建他们的所有实体。哪种方法是建立l2s实体的首选方法,每种方法的优缺点是什么 到目前为止,我注意到的唯一区别是,在使用可视化设计器时,我似乎无法进行继承映射,尽管MSDN说我应该能够这样做,所以我可能在VS2010的界面中遗漏了它。但是,我不确定是否应该使用继承,因为在我不需要子表数据的

我目前正在阅读Pro Asp.Net MVC,他们正在手动构建所有的linq2sql实体类,并使用linq映射属性映射它们。然而,我所看到的(来自谷歌搜索)谈论LINQ2SQL的其他人似乎都在使用可视化设计器来构建他们的所有实体。哪种方法是建立l2s实体的首选方法,每种方法的优缺点是什么

到目前为止,我注意到的唯一区别是,在使用可视化设计器时,我似乎无法进行继承映射,尽管MSDN说我应该能够这样做,所以我可能在VS2010的界面中遗漏了它。但是,我不确定是否应该使用继承,因为在我不需要子表数据的情况下,从技术上讲,继承可以添加额外的连接

作为PS,l2s不会对我的模式进行任何修改,我将手动生成模式更改,然后在linq2sql中复制它们


谢谢,

我们已经使用L2S构建了整个应用程序框架后端。我开发了其中的大部分。我开始使用DBML设计器,但我很快意识到这是一个巨大的痛苦。每个架构更改都需要更改设计器中的表。另外,设计器创建的实体都被塞进了一个类文件中,并且没有我想要的所有功能,比如支持M2M关系等等。所以,没过多久我就意识到我想要一个更好的方法

我最终编写了自己的代码生成器,以我想要的方式生成L2S实体,它还生成了一组在应用层中使用的“轻量级”实体。这些没有任何L2S管道。代码生成器直接从目标数据库创建所有这些实体和其他代码。不再使用DBML


这对我们来说非常有效,我们的实体正是我们想要的,并且在每次数据库模式更改时自动生成。

我们一直使用设计器。它确实引入了一个附加步骤,每次对模式进行更改时,都需要将表再次导入设计器,但我认为与绕过设计时需要编写的代码量相比,effrot显得微不足道

还要注意,设计器创建分部类时,您可以为分部类创建一个包含其他实现详细信息的附加文件。这样,当表在设计器中被引用时,就只剩下额外的代码了。我们这样做是为了向类中添加许多帮助函数,并提供覆盖原始整数FK字段的严格类型枚举属性

继承确实很难很好地完成,但我认为如果您需要这种数据层,L2S可能不是最好的解决方案。我更喜欢保持我的数据层干净和简单,只需使用L2S将数据输入和输出,然后在业务层中使用更复杂的逻辑。如果我们真的需要在数据层中进行对象继承之类的工作,我可能会探索一种更先进、更复杂的技术,比如EF