Linq to sql Linq到SQL代码生成器特性

Linq to sql Linq到SQL代码生成器特性,linq-to-sql,code-generation,Linq To Sql,Code Generation,我非常喜欢LINQtoSQL及其鼓励的编程模型。我认为,在许多情况下,当您同时控制数据库模式和代码时,不值得为数据使用不同的关系模型和对象模型。使用Linq to SQL可以简化从.NET进行类型安全数据访问,使用部分扩展方法实现业务规则 不幸的是,由于缺乏模式刷新功能,我不喜欢dbml设计器。到目前为止,我已经使用了SqlMetal,但它缺少dbml设计器的定制选项。正因为如此,我开始研究一种工具,它可以像SqlMetal一样重新生成整个代码文件,但能够进行dbml设计器中提供的自定义(将来可

我非常喜欢LINQtoSQL及其鼓励的编程模型。我认为,在许多情况下,当您同时控制数据库模式和代码时,不值得为数据使用不同的关系模型和对象模型。使用Linq to SQL可以简化从.NET进行类型安全数据访问,使用部分扩展方法实现业务规则

不幸的是,由于缺乏模式刷新功能,我不喜欢dbml设计器。到目前为止,我已经使用了SqlMetal,但它缺少dbml设计器的定制选项。正因为如此,我开始研究一种工具,它可以像SqlMetal一样重新生成整个代码文件,但能够进行dbml设计器中提供的自定义(将来可能还会有更多)

自定义将在一个xml文件中描述,该文件只包含不应具有默认值的部分。这将降低xml文件的大小以及维护负担


为了帮助我关注正确的功能,我想知道:linq To sql代码生成器中最重要的功能是什么?

不确定这是否是您想要的功能,但以下是一些我想看到的功能:

  • 将枚举类型分配给外键字段的能力。因此,如果“Item”表引用“ItemType”表,则可以轻松地为该关系分配“ItemType”枚举,以便在访问get/set属性时,可以获得严格类型的枚举,而不是另一个表中的ID a记录。我认为您可以在DBML设计器生成的.cs文件中执行此操作,但在下次将表重新添加到设计器时,它当然会被吹走。此外,还可以在分部类中添加映射到ID字段的新属性,但如果在设计器中以本机方式完成,那就更好了

  • 对于FK关系,让它基于FK字段名称或FK约束名称命名特性。例如,如果您的“Item”表有一个“CreatedByUserID”和“UpdatedByUserID”字段,这两个字段都引用“User”表,那么LINQ DBML设计器将创建一个具有名为“User”和“User1”属性的Item类,因此您几乎必须猜测哪个是创建者,哪个是更新者(希望在分部类中添加更多更显式的属性)。如何生成这些名称会有点棘手,但任何东西都比它们现在拥有的要好


不确定这是否是您想要的,但以下是一些我想看到的功能:

  • 将枚举类型分配给外键字段的功能。因此,如果“Item”表引用“ItemType”表,则可以轻松分配“ItemType”枚举,这样当您访问get/set属性时,您将获得严格类型的枚举,而不是另一个表中的ID a记录。我认为您可以在DBML设计器生成的.cs文件中执行此操作,但在下次将表重新添加到设计器时,它当然会消失。此外,您还可以添加分部类中映射到ID字段的新属性,但如果在设计器中以本机方式完成,那就更好了

  • 在FK关系的情况下,让它根据FK字段名或FK约束名命名属性。例如,如果“Item”表有一个“CreatedByUserID”和“UpdatedByUserID”字段,这两个字段都引用“User”表,LINQ DBML设计器将创建一个具有名为“User”和“User1”属性的Item类,因此您几乎必须猜测哪个是创建人,哪个是更新人(希望在分部类中添加更多更显式的属性)。如何生成这些名称会有点麻烦,但任何事情都比现在好


  • 这是一个边缘问题。考虑如果MS开始为他们的产品收集可用性的信息,那么MS会得到什么反应。至少它应该是社区wiki,因为没有办法明确回答它。FYI -我有一个添加到VisualStudio的插件,给设计器添加了一些缺失的特性。(通过xml注释控制类和属性命名、批量重命名、模型数据库同步、类和属性文档等)检查一下它是否符合你的需要。这是一个边缘问题。考虑到如果MS开始为他们的产品收集可用性的信息,那么它会得到什么反应。至少它应该是社区wiki,因为没有办法最终确定它。FYI -我有一个VisualStudio广告的附加项。将一些缺少的功能发送给设计器。(通过xml注释控制类和属性命名、批量重命名、模型数据库同步、类和属性文档等)。请在上查看,看看它是否符合您的需要。感谢您的评论。您将查找表转换为枚举的想法非常好。第二点使用FK关系名称是我已经有了解决方案的。我会在有试用版可用时通知您。感谢您的评论。您的翻译查找选项卡的想法从les到enums非常好。第二点是FK关系名称,我已经有了解决方案。有试用版时,我会通知您。