假设您向客户发送了一个新的应用版本,并且您需要更新本地客户数据库,比如它是一个SQL microsoft数据库2008.
现在我通过数据库中的版本表执行此操作,然后运行, sql脚本。 - 匹配该版本,例如:
if (DatabaseVersion < Common_func.ProgramDBFixVersion)
{
switch (DatabaseVersion)
{
case 0:
if (Fix0() == false) NoErrorFixFlg = false;
goto case 1;
case 1:
if (Fix1() == false) NoErrorFixFlg = false;
goto case 2;
.
.
.
private static bool Fix1()
{
try
{
var conn = new SqlConnection(Utils.ConnectionString);
conn.Open();
ExecSql(conn, "ALTER TABLE Customer ADD Is_Deleted [bit] NULL");
conn.Close();
}
catch (Exception ex)
{
retrun false;
}
return true;
}
这项工作很好,但在实体框架中是否有任何真正内置的支持。
没有任何数据丢失!
如果是这样 - 你能否给出一些具体的例子,说明如何以正确的方式做到这一点。
非常感谢你!
答案 0 :(得分:5)
查看迁移:http://blogs.msdn.com/b/adonet/archive/2012/02/09/ef-4-3-code-based-migrations-walkthrough.aspx
在没有自动更新的情况下使用时,每次迁移/更改都会在包含脚本更改和回滚的文件中创建