2010-12-13 100 views
1

hello 我想根据我的实体edmx文件更改我的数据库结构? 我知道如何创建一个数据库:更改实体中的数据库

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

为什么我要做到这一点我想安装我program.I使用实体的一个新版本,我的EDMX文件已被更改,所以我的数据库有改变吗?根据我的新edmx文件。

回答

1

实体框架不支持这个。这个'功能'缺失的原因是因为这样做不是微不足道的。你是否希望EF改变你的生产数据库,并可能删除数据列?我不这么认为。

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

我一直使用Microsoft SQL事件探查器记录更改我让使用SQL Server Management Studio中我的架构。您也可以使用SQL Compare(从RedGate)这样的工具来比较两个数据库并为更改生成脚本。

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

+1

+1。 仅供参考:可以为EF模型生成更改脚本(更改表等)的工具是我的VS2010加载项:http://huagati.com/edmxtools/ – KristoferA 2010-12-13 10:51:21

相关问题