【问题标题】:Solution For Updating LINQ to SQL Files After Database Schema Change数据库架构更改后更新 LINQ to SQL 文件的解决方案
【发布时间】:2015-12-28 06:08:42
【问题描述】:

我最近开始在我的数据库中使用 LINQ to SQL 用于 C# Windows 窗体项目。到目前为止,我对实现数据访问层的速度印象深刻。我面临的问题类似于下面 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。任何人都可以推荐最优雅或首选的方式来处理这个问题吗?我知道我可以使用实体框架,但是我继承了这个项目,而且我的期限非常紧迫。完成此阶段后,我可以将其重构为另一个框架。

【问题讨论】:

    标签: sql linq


    【解决方案1】:

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

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

    这并不理想,但是,一旦完成了几次,对于我偶尔需要对数据库进行的更改类型(例如更改数据类型、添加键等)来说就很轻松了...

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 我通常直接修改 DBML 的唯一原因是更改关联名称。我保留在可扩展性方法中的所有其他内容。您是否发现您能够使用 linq 生成的关联名称?我的问题是,如果我对同一个表有很多外键(即参考数据),那么我所有的关联都是类似 (RefData, RefData1, RefData2) 的名称,而不是像 OrderStatus、TransactionStatus 等更有意义的名称......其中 OrderStatus , 交易状态是同一张表中存储的参考数据。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-17
      • 2017-02-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多