您好 我想根据我的实体edmx文件改变我的数据库结构? 我知道如何创建数据库:
if(myEntity.DatabaseExists())
{
//?????
//check database if there is any change in database alter database according to edmx file.
}
else
{
myEntity.CreateDatabase();
}
为什么我要这样做?我想安装我的程序的新版本。我使用实体,我的edmx文件已被更改,因此我的数据库必须根据我的新edmx文件进行更改。
答案 0 :(得分:1)
实体框架不支持此功能。这个“特征”缺失的原因是因为这样做并不容易。您是否希望EF更改生产数据库并可能删除包含数据的列?我不这么认为。
您需要做的是创建允许您更新数据库架构的脚本。如果要自动执行此操作,可以向数据库添加某种“版本”表,其中包含架构的版本号。在启动时,您可以检查版本号并为较新版本(在事务中)运行所有架构更新脚本。
我总是使用Microsoft SQL Profiler来记录我使用SQL Server Management Studio对架构所做的更改。您还可以使用SQL Compare(来自RedGate)之类的工具来比较两个数据库并生成更改的脚本。
EF无法自动为您运行更新,您需要自己运行这些数据库脚本。