我有一个定义了很多外键关系的数据库.当我将这些FK连接中涉及的任何表拖到DBML编辑器中时,为了机器生成DBML文件,这些都将表示为关联.
从这里我可以对这些关联进行任何更改:我可能希望关联的父端internal而不是public使得JSON序列化程序(比如说)不会被循环引用捕获; 或在表之间的连接Form和FormAnswer,我可能要被称为子属性Answers,而不是生成的机器FormAnswers.
现在,如果更改了数据库设计,并且我想更新DBML以反映此更改,那么这些自定义似乎需要我跟踪每个更改并手动更新它(添加属性,设置它的源,源数据类型, C#数据类型......)
这可能是一个相当繁琐的过程; 我问的是,是否有任何方法可以实现自动化.
看起来,理想的解决方案是,如果有任何方法可以直接在SQL Server数据库图表中制作这些规范,那么完全重新生成DBML文件(删除所有内容并将其拖到DBML编辑器上)将会得出完全相同的结果.
怀疑我已经知道上述情况,如果可以实现,我很乐意和解:
由于所有Linq to SQL实体都是作为部分类生成的,我想了一段时间我可以创建一个新文件,我手动维护,我可以将所有更改复制到所提到的文件中.
因此,每当我更改关联时,我都会深入了解designer.cs代码,剪切修改后的关联,并将其粘贴到我自己的文件中.重新生成后,我会期望任何重复的编译器错误,并轻松地逐步执行并从DBML中删除这些关联.这里的问题是关联似乎只是属性的属性.如果Form有一个被调用的属性Answers,并且DBML生成器将尝试创建一个被调用的属性FormAnswers,那么结果Form对象将只具有这两个属性,这根本不是我想要的.
有没有人对这些解决方案有任何好运?或者,如果您知道处理问题的任何其他方式,我愿意接受建议.
我有一个VS(2008年,2010年,2012年和2013年)的加载项,可以帮助你在这里.它添加了DB <=> DBML同步,并且有许多设置可让您控制要同步的更改类型,以及"排除列表",允许您将单个表/视图/成员/ FK标记为"不要触摸"项目.
至于您提到的FK =>关联问题:同步选项允许您排除所有或单个子导航属性,以避免在序列化实体对象时可能导致麻烦的循环引用.
如果您想将其用于测试旋转,可以从http://www.huagati.com/dbmltools/下载该加载项.

不包括FK协会的一方http://forum.huagati.com/upload/2/exclusionChdProp.png
我还没有找到任何方法可以根据数据库的更改自动更新 DBML,而无需清除整个画布并再次重新拖动项目。正如你所说,FK 都被重命名为默认值,这很烦人。
DBML 采用 XML 格式,我经常发现,一旦主要的数据库更改稳定下来,只需编辑 XML(打开方式...)并进行修改,就像在创建过程中并行进行一样,会更快更容易我保留作为项目一部分的脚本。
然后重建,或者可能只是运行自定义工具来重新生成对 cs 文件的更改。
这是 VS 2008 的情况,不确定 2010 年是否仍然是一个挑战。
华泰
| 归档时间: |
|
| 查看次数: |
1602 次 |
| 最近记录: |