更改DBML,如何更改SQL数据库?

时间:2010-03-26 08:16:24

标签: c# .net sql linq

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

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

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

2 个答案:

答案 0 :(得分:1)

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

这是方法:

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

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

不是你所问的,但这是一个切实可行的解决方案。

UpdateScript可能如下所示:

** PSEUDOCODE **

-- 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

答案 1 :(得分:0)

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