数据库架构更改后将LINQ更新为SQL文件的解决方案

数据库架构更改后将LINQ更新为SQL文件的解决方案,sql,linq,Sql,Linq,我最近开始在我的数据库中使用LINQtoSQL,后来用于一个C#Windows窗体项目。到目前为止,我对实现数据访问层的速度印象深刻。我面临的问题与下面2008年的帖子类似 简言之,在对数据库进行了一些小的更改(如约束、外键、新列等)之后,我正在努力寻找一种更新LINQ到SQL文件的有效解决方案 到目前为止,我只是在LINQtoSQL设计器中删除表并将它们拖回设计器中。但是,我现在需要重命名设计器中的许多关联。问题是,每次我必须重新创建LINQ到SQL文件时,我都会丢失手动对文件所做的更改。有

我最近开始在我的数据库中使用LINQtoSQL,后来用于一个C#Windows窗体项目。到目前为止,我对实现数据访问层的速度印象深刻。我面临的问题与下面2008年的帖子类似

简言之,在对数据库进行了一些小的更改(如约束、外键、新列等)之后,我正在努力寻找一种更新LINQ到SQL文件的有效解决方案

到目前为止,我只是在LINQtoSQL设计器中删除表并将它们拖回设计器中。但是,我现在需要重命名设计器中的许多关联。问题是,每次我必须重新创建LINQ到SQL文件时,我都会丢失手动对文件所做的更改。有人能告诉我是否有新的解决方案和/或方法来解决这个问题吗。我包含的帖子以及许多其他过时的信息来源都提到SQLMetal和Huagati是很好的工具。此外,我还了解到,您可以手动创建linqtosql文件,而不是使用设计器自动生成它们(这是我在使用Hibernate和Java时必须做的事情)


我知道手动创建域类和映射文件将非常耗时。我不熟悉SQLMetal或Huagati。有人能推荐处理这个问题的最优雅或首选的方法吗?我知道我可以使用实体框架,但是,我继承了这个项目,我的期限非常紧迫。一旦这个阶段完成,我可以将其重构到另一个框架。

经过大量研究和阅读,我确定在数据库发生微小更改后更新DBML的最佳解决方案是手动编辑该文件。用于更新DBML的过程如下所示:

  • 右键单击DBML文件
  • 使用XML编辑器打开
  • 添加或更改受影响表中的列
  • 添加或更改任何关联
  • 保存DBML
  • 重建项目

  • 这并不理想,但是,一旦做了几次,对于我偶尔需要对数据库进行的更改类型(如更改数据类型、添加键等)来说,这是非常轻松的。我不接触dbml或linq2sql生成的文件,因为我的更改有被覆盖的风险。我只使用生成的分部类。当数据库模式更改时,我从dbml编辑器中删除旧表,并将新表拉入其中

    我通常直接修改DBML的唯一原因是更改关联名称。我在扩展性方法中保留的所有其他内容。您是否发现能够使用linq生成的关联名称?我的问题是,如果我有许多外键指向同一个表(即引用数据),那么我的所有关联都类似于名称(RefData、RefData1、RefData2),而不是更有意义的东西,如OrderStatus、TransactionStatus等。其中OrderStatus、Transaction status是存储在同一个表中的引用数据。