【问题标题】:Changing DBML, how to change SQL database?更改DBML,如何更改SQL数据库?
【发布时间】:2010-03-26 08:16:23
【问题描述】:

有一个使用 SQL 数据库的应用程序。该应用程序已经发布,但现在我正在更新。在更新中,我在我的数据库表中添加了一个额外的列。

我已经使用 DataContext.CreateDatabase() 从我的 DMBL 创建了数据库(不是相反,因为我后来发现这是更常见的情况)

我在 LINQ 中有可以更新我的 SQL 数据库方案的工具吗?

【问题讨论】:

    标签: c# .net sql linq


    【解决方案1】:

    不,对不起。我也想拥有这样的设施。您必须手动升级数据库。

    方法如下:

    • 创建一个名为“spGetDBVersion”之类的存储过程。此过程仅返回您当前部署的数据库版本的整数。
    • 在启动/安装时检查该程序的结果是否与您的程序期望的版本匹配。
    • 如果不是 -> 以正确的顺序执行更新脚本。示例:如果 spGetDBVersion 返回 2 而您的应用程序需要 5,那么您必须执行 Update_To_3.sql、Update_To_4.sql 和 Update_To_5.sql

    提示:在初始版本之后,我从未使用工具更改我的数据库架构。我总是编写更改脚本并将其放入我的下一个更新脚本中。

    不是你问的那样,但这是一个可行的解决方案。

    UpdateScript 可能如下所示:

    ** 伪码**

    -- Update to version 2
    alter table [MyTable] add newColumn int null
    GO
    update [MyTable] set [newColumn] = 0
    GO
    alter table [MyTable] change newColumn int not null
    GO
    alter procedure spGetDBVersion
    as
    begin
        select 2 as CurrentVersion
    end
    

    【讨论】:

    • 太好了,我喜欢这个解决方案!
    【解决方案2】:

    如果您更改数据库中的表,您应该从 dbml 文件中删除相应的表。 再次添加它,dbml 文件应该会再次重新生成,这样您的更改才会生效。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-22
      • 2015-01-19
      • 1970-01-01
      • 2014-10-29
      • 1970-01-01
      相关资源
      最近更新 更多