Vb.net 哪些数据库更改需要重新同步dbml linq对象?

Vb.net 哪些数据库更改需要重新同步dbml linq对象?,vb.net,linq-to-sql,vb.net-2010,Vb.net,Linq To Sql,Vb.net 2010,什么样的数据库表模式更改需要我根据表找到使用dbml文件的所有程序并重新编译?我喜欢linq的优点,但这种维护似乎对生产力有很大的影响。好吧,有两种更改需要你重新同步DBML并重新编译你的应用程序 1:您希望在代码中包含的更改 例如:您添加了一个新字段,并且希望在代码中编辑/显示此字段。显然,L2S类无法知道新字段,因此必须重新同步它们 2:将破坏现有代码的更改 例如:如果您将数据类型从varchar更改为int,而您现有的代码不知道这一点,那么当在int字段中插入字符串时,它将在运行时崩溃 我

什么样的数据库表模式更改需要我根据表找到使用dbml文件的所有程序并重新编译?我喜欢linq的优点,但这种维护似乎对生产力有很大的影响。

好吧,有两种更改需要你重新同步DBML并重新编译你的应用程序

1:您希望在代码中包含的更改

例如:您添加了一个新字段,并且希望在代码中编辑/显示此字段。显然,L2S类无法知道新字段,因此必须重新同步它们

2:将破坏现有代码的更改

例如:如果您将数据类型从varchar更改为int,而您现有的代码不知道这一点,那么当在int字段中插入字符串时,它将在运行时崩溃

我喜欢linq的优点,但这种维护似乎是个大问题 生产力受到打击


不太可能,在这种情况下,任何其他数据方法都需要某种维护。

可能将dbml放在一个项目中,然后在整个程序中重用该项目。为此,如果有新版本的客户端应用程序使用的dll,有没有办法自动更新它。我正在使用Click Once进行应用程序部署。如果我能在每次有dll的时候都下载应用程序正在使用的新版本的dll,那么我就不必每次都重新编译。当然,我只能对不会影响应用程序的更改执行此操作,但如果我将linq类全部分离到dll中,这将使它们与DB保持同步。我可以只更新一个linq dll,而不是所有引用它的项目。至少有一种情况是,直接sql访问数据库将继续工作,而dbml/linq方法不会。如果从表中删除了一个字段,并且我没有在特定程序中使用该字段,那么实际上在这里经常会发生,描述表中字段的直接sql更新将继续工作。但是如果删除了一个字段,并且我的代码试图从表中的记录创建一个对象,而不重新编译,那么使用linq将导致崩溃,因为它试图创建的属性没有对应的字段。这是一个有趣的用例。我的第一个问题是为什么数据库里有这个字段。。。如果它已经存在并且从未使用过,为什么要移除它?但在这种情况下,它会失败,所以你是对的。我的想法是,使用linq与其他DB方法相比,不需要太多维护。少数需要重新编译的情况,比如我提到的关于删除字段的情况,可能非常罕见——或者应该是这样的:而且就像中间表设计的Pleun隐含结果一样,因此即使它没有崩溃,也可能最好在完成表模式之后重新附加表以清理代码。