ADO.net Entity framework Model-fisrt 后期更改数据库扩展

本文解决ADO.net Entity framework Model-fisrt 后期更改数据库扩展,了解EDM,都了解EDM提供由模型生成数据库功能,现存在一个问题,就是在我们生成数据库之后,如果需要后期更改数据库结构,EDM当前版本是不支持更改模型,再反向更新到数据库的,只能通过数据库来更新EDM。相比之下,我们会觉得还是通过EDM模型更改数据库方便,以下是解决方法。

ADO.net Entity framework Model-fisrt 后期更改数据库扩展_第1张图片

  • 开发工具:VS 2010 EN
  • 开发语言:Visual C#
  • ADO.NET Entity Data Model

这里有一个更改目标数据库结构的插件:Entity Designer Database Generation Power Pack

下载安装完后成,生成数据库的时候,生成DDL部分界面更改下图显示:

ADO.net Entity framework Model-fisrt 后期更改数据库扩展_第2张图片

下面演示添加字段和添加数据表。

当前数据库结构如下图:

ADO.net Entity framework Model-fisrt 后期更改数据库扩展_第3张图片

1.添加字段演示

在Customers实体中添加Question:String 字段

ADO.net Entity framework Model-fisrt 后期更改数据库扩展_第4张图片

保存当前更改,右击模型空白处,在右键菜单中选择Generate Database from Model...(从模型生成数据库),如下图

ADO.net Entity framework Model-fisrt 后期更改数据库扩展_第5张图片

在弹出窗口中选择Generate Migration T-SQL And Deploy(在左侧列表中选中“Generate Migration T-SQL And Deploy”,点击右侧“Select Workflow for Database Generation”按钮),下图所示:

ADO.net Entity framework Model-fisrt 后期更改数据库扩展_第6张图片

点击“Next>”,进度条显示处理进度。

点击“Finish”完成,这时刷新“Customers”表发现所有列中并没有Question列,哪里出错了?还是扩展根本没有起到作用?这里是因为在向已存在表(含有数据)中添加字段,该字段必须为可空类型才可以正常添加,修改Question字段为可空类型,再重复以上操作。

再刷新“Customers”表发现Question列已被添加上了。

ADO.net Entity framework Model-fisrt 后期更改数据库扩展_第7张图片

2.添加数据表

添加VIP表,包含Id、Name两列

ADO.net Entity framework Model-fisrt 后期更改数据库扩展_第8张图片

重复添加字段中的方法,完成后刷新数据库中的表

ADO.net Entity framework Model-fisrt 后期更改数据库扩展_第9张图片

我们看到新建的实体VIP,而对应到数据库中为VIPs,这个是由Entity Set Name决定的,如下图:

ADO.net Entity framework Model-fisrt 后期更改数据库扩展_第10张图片

注:1.添加字段时如果已存在的表中含有数据,添加的目标字段必须为空,空表不影响。

  2.扩展只支持添加字段和数据表,不支持删除操作

 

英文资料:http://blogs.msdn.com/b/adonet/archive/2010/02/08/entity-designer-database-generation-power-pack.aspx

你可能感兴趣的:(framework)