EntiyFramework :Update model from database引起的两个问题

EntiyFramework一大特点就是Code first,但难免有时候因特殊原因需要Update model from database。此次使用该功能时遇到两个问题,且记之。

[问题一]

  Error 3027: No mapping specified for the following EntitySet/AssociationSet - XXXXXXX.

[起因]

   在数据库新建一张表,并使用Update model from database功能同步到EF, Add Association后,发生该错误。

[说明]

   XXXXXXX代表关系名称,例如一个外键关系:FK_Bug_TestCase。

[原因]

  在EF中Add Association时,.edmx文件并未被同步创建。

[解决方案]

  Step1:右键.edmx文件,以XML Editor方式打开,如下图:

  Step2:ctrl+F 搜索,找到名称为XXXXXXX的Asscoiation节点,以FK_Bug_TestCase为例,并添加<ReferentialConstraint></ReferentialConstraint>节点,并设置Principal的Role属性为主键表名,子节点PropertyRef的Name属性为主键表用作外键的字段名;设置Dependent的Role属性为外键表名,  子节点PropertyRef的Name为外键字段名。如下图所示:

  Step3:保存即可。

 

[问题二]

   Unable to update the EntitySet 'Bug' because it has a DefiningQuery and no <InsertFunction> element exists in the <ModificationFunctionMapping> element to support the current operation.

[起因]

  在问题一已解决的前提下,对数据库进行更新是引起。

[原因]

  使用Update model from database功能时,EF在.edmx文件里创建了< DefiningQuery ></ DefiningQuery >节点。DefiningQuery 节点的作用,MSDN解释如下:A defining query is commonly used to provide functionality similar to that provided by a database view, but the view is defined in the model, not the database.

[解决方案]

  Step1:同问题一Step1,以XML Editor方式打开.edmx文件。

  Step2:ctrl+F 搜索,找到名称为DefiningQuery的节点(其实一眼就可以看出来它所在EntitySet跟别的EntitySet的不同,用的时候就看到了),并删除。此外对其所在EntitySet节点的Store:Schema属性的Store:命名空间去掉,并删除Store:Name属性。如下图所示:

  修改前:

修改后:

  Step3:保存即可。

 

转载于:https://www.cnblogs.com/yuanlb/archive/2013/04/18/3029238.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值