【发布时间】:2019-08-07 03:12:07
【问题描述】:
我有一个定义了很多外键关系的数据库。当我简单地将这些 FK 连接中涉及的任何表拖到 DBML 编辑器中,以便机器生成 DBML 文件时,这些都将表示为关联。
从这里我可以对这些关联进行任何更改:我可能希望关联的父端是 internal 而不是 public 以便 JSON 序列化程序(比如说)不会陷入循环参考;或者在表Form 和FormAnswer 之间的连接中,我可能希望将子属性称为Answers,而不是机器生成的FormAnswers。
现在,如果数据库设计发生更改,并且我想更新 DBML 以反映此更改,这些自定义似乎需要我跟踪每一个更改并手动更新它(添加属性,设置它的源,源数据类型,C#数据类型……)
这可能是一个相当乏味的过程;我要问的是是否有任何方法可以自动执行此操作。
1。我可以将这些更改反映在 SQL 服务器上吗?
似乎理想的解决方案是,如果有任何方法可以直接在 SQL Server 数据库图表中制作这些规范,以便完全重新生成 DBML 文件(删除所有内容并将其拖到 DBML 编辑器中) anew) 会得出完全相同的结果。
怀疑我已经知道上述内容,如果可以实现,我很乐意接受:
2。我可以将这些更改提取到它自己的类中吗?
由于所有 Linq to SQL 实体都是作为部分类生成的,我想了一会儿我可以创建一个新文件,我可以手动维护它,我可以将所有提到的更改复制到该文件中。
因此,每当我更改了关联时,我都会深入研究 Designer.cs 代码,剪切修改后的关联,然后将其粘贴到我自己的文件中。重新生成后,我预计任何重复项都会出现编译器错误,并且可以轻松地逐步检查并从 DBML 中删除这些关联。这里的问题是关联似乎只是具有属性的属性。如果Form 有一个名为Answers 的属性,并且DBML 生成器将尝试创建一个名为FormAnswers 的属性,则生成的Form 对象将只具有这两个属性,这根本不是我想要的。
有没有人对这些解决方案有任何运气?或者,如果您知道任何其他解决问题的方法,我愿意提供建议。
【问题讨论】:
标签: .net linq-to-sql