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

时间:2012-02-07 01:19:41

标签: sql linq

我最近开始在我的数据库中使用LINQ to SQL来进行C#Windows Forms项目。到目前为止,我对能够实现数据访问层的速度印象非常深刻。我面临的问题类似于2008年以下的帖子

Best way to update LINQ to SQL classes after database schema change

简而言之,在对数据库进行微小更改(例如约束,外键,新列等)之后,我很难找到更新LINQ to SQL文件的有效解决方案......

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

我知道手动创建域类和映射文件会很费劲。我不熟悉SQLMetal或Huagati。任何人都可以推荐最优雅或首选的方式来处理这个问题吗?我知道我可以使用Entity Framework但是,我继承了这个项目,并且我处于一个非常紧迫的截止日期。一旦我完成这个阶段,我就可以将它重构为另一个框架。

2 个答案:

答案 0 :(得分:2)

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

  1. 右键单击DBML文件
  2. 使用XML编辑器打开
  3. 添加或更改受影响的表格中的列
  4. 添加或更改任何关联
  5. 保存DBML
  6. 重建项目
  7. 这不是理想的,但是,一旦完成了几次,对于我偶尔需要对数据库进行的更改类型(例如更改数据类型,添加密钥等等)来说,这是非常轻松的......

答案 1 :(得分:0)

我没有触及dbml或linq2sql生成的文件,因为我的更改可能会被覆盖。我只使用生成的部分类。当数据库模式更改时,我从dbml-editor中删除旧表并将新表拉到它。