改变实体中的数据库

时间:2010-12-13 06:21:00

标签: entity-framework linq-to-entities

您好 我想根据我的实体edmx文件改变我的数据库结构? 我知道如何创建数据库:

if(myEntity.DatabaseExists())
{
   //?????
   //check database if there is any change in database alter database according to edmx file.    
}
else
{
    myEntity.CreateDatabase();
}

为什么我要这样做?我想安装我的程序的新版本。我使用实体,我的edmx文件已被更改,因此我的数据库必须根据我的新edmx文件进行更改。

1 个答案:

答案 0 :(得分:1)

实体框架不支持此功能。这个“特征”缺失的原因是因为这样做并不容易。您是否希望EF更改生产数据库并可能删除包含数据的列?我不这么认为。

您需要做的是创建允许您更新数据库架构的脚本。如果要自动执行此操作,可以向数据库添加某种“版本”表,其中包含架构的版本号。在启动时,您可以检查版本号并为较新版本(在事务中)运行所有架构更新脚本。

我总是使用Microsoft SQL Profiler来记录我使用SQL Server Management Studio对架构所做的更改。您还可以使用SQL Compare(来自RedGate)之类的工具来比较两个数据库并生成更改的脚本。

EF无法自动为您运行更新,您需要自己运行这些数据库脚本。