2010-03-26 65 views
7

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

我已经创建使用DataContext.CreateDatabase()从我DMBL数据库(而不是其他的方式,我发现是后来更常见的情况)

我有在LINQ的设施中,我可以更新我的SQL数据库方案?

回答

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

非常好,我喜欢这个解决方案! – 2010-03-29 08:57:09

0

如果在数据库中更改你的表,你应该删除的dbml文件中的相应表格。 再次添加它,并且dbml文件应该再次生成,以便您的更改生效。