【问题标题】:LINQ to SQL - How to deal with changes to databaseLINQ to SQL - 如何处理对数据库的更改
【发布时间】:2009-06-03 08:09:47
【问题描述】:

我对 LINQ to SQL 还很陌生,所以我可能会在这里遗漏一些基本的东西。

我创建了一个 LINQ to SQL 层,生成了所有 dbml 文件等,并创建了一个运行良好的 LINQ 查询。然后我对数据库进行了更改,并希望将该更改反映在 ORM 层中。为此,我删除了我的 ORM 层并创建了一个新层(可能不是最好的方法?)。

现在我的代码无法在智能感知中看到 datacontext 对象并且无法编译。我想这可能很简单,但我也想了解如何在数据库更改时更新 LINQ to SQL ORM 层的更大图景。

【问题讨论】:

标签: linq linq-to-sql


【解决方案1】:

是的,您不想删除整个 DBML 文件。在设计器中打开它,然后删除更改的表。然后从“服务器资源管理器”(在视图菜单中)再次拖放它。这将加载数据库的更新副本... 请注意,如果在您更改 SQL 架构时服务器资源管理器已打开,则需要刷新服务器资源管理器以使其具有最新版本。

这种方法的缺点是,如果您对 DBML 中的表进行自定义,则需要重做。这对我来说很少见。

【讨论】:

  • 如果您将它们放入部分类中,自定义不会受到影响。更新 DBML 时不会重新生成分部类。
  • 我所指的自定义是您在设计器中所做的修改(例如,更改属性名称、延迟加载属性等)。
【解决方案2】:

我记得有很多这个问题。修复很简单,真的。重建您的解决方案! DataContext 和其他此类类是在构建期间生成的。

很头疼 - 我希望 DBML 工具在您关闭它时为您执行此操作。

【讨论】:

  • 重建不足以更新 ORM 层。您必须从设计器中删除受影响的表,然后重新添加。
【解决方案3】:

您还可以使用SQLMetal 来更新您的 DBML 类。有些人甚至编写脚本或批处理文件来自动化该过程。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多