2010-03-22 82 views
1

我非常喜欢Linq to SQL和它鼓励的编程模型。我认为,在许多情况下,当你控制数据库模式和代码时,为数据建立不同的关系和对象模型是不值得的。使用Linq to SQL可以很容易地从.NET获得类型安全的数据访问,使用部分扩展方法来实现业务规则。Linq to SQL代码生成器功能

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

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

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

+0

这是SO的边际问题。如果他们开始通过SO为他们的产品收集有关可用性的信息,请考虑MS会得到的反应。至少它应该是社区wiki,因为没有办法明确回答它。 – tvanfosson 2010-03-22 18:24:27

+0

仅供参考 - 我有一个Visual Studio插件,它为设计人员添加了一些缺失的功能。 (控制类和属性命名,批量重命名,模型<->数据库同步,通过xml注释的类和属性文档等)。查看http://www.huagati.com/dbmltools/看看它是否符合你的需求。 – KristoferA 2010-03-23 02:30:16

回答

1

不知道这是否就是你要找什么是的,但这里的一些功能,我希望看到:

  • 到枚举类型分配给外键字段的能力。因此,如果您的“Item”表参考了“ItemType”表,则可以轻松地为该关系分配一个“ItemType”枚举,以便在访问get/set属性时获得严格类型的枚举而不是ID在另一张桌子上录制。我认为你可以在由DBML设计器生成的.cs文件中做到这一点,但当你下一次将表重新添加到设计器时,它会被吹走。另外,您可以在映射到ID字段的分部类中添加一个新属性,但如果这是在设计器中本地完成的,那将会很好。

  • 在FK关系的情况下,根据FK字段名称或FK约束名称命名属性。例如,如果您的“Item”表具有引用“User”表的“CreatedByUserID”和“UpdatedByUserID”字段,那么LINQ DBML设计器将创建一个名为“User”和“User1”的Item类,这样您几乎不得不猜测哪个是由哪个创建的,哪个是更新的(并且希望在分部类中添加额外的,更明确的属性)。你如何去生成这些名字会变得有点多毛,但是什么都比现在好。

+0

感谢您的意见。将查找表转换为枚举的想法非常好。与FK关系名称的第二点是我已经有一个解决方案。当有试用版时,我会通知你。 – 2010-03-24 17:11:13