你的位置:首页 > ASP.net教程

[ASP.net教程]Entity Framework想说爱你不容易,这么多的报错,这么多的限制,该如何解决?


首先看一下采用MODEL FIRST的方式设计的实体模型对象关系图:

注意:EntityOne中有导航属性:EntityTwo

在如下代码中的几种情况进行新增操作,均会报错,新增都不会成功:

 static void Main(string[] args)    {      Model1Container context = new Model1Container();      //第一种情况:EntityOne有导航属性EntityTwo ,新增时必需同时指定新增的EntityTwo ,否则报错:“Model1Container.EntityOnes”中的实体参与“EntityOneEntityTwo”关系。找到 0 个相关的“EntityTwo”。应有 1 个“EntityTwo”。      var objSetOne = context.EntityOnes;      objSetOne.MergeOption = MergeOption.NoTracking;      objSetOne.AddObject(new EntityOne() { ID = 2, P1 = "pp1", P2 = "pp2", P3 = "pp3"});      context.SaveChanges();            //第二种情况:有些时候,我们的EntityTwo可能需要先创建,但这样执行同样报错:“Model1Container.EntityTwos”中的实体参与“EntityOneEntityTwo”关系。找到 0 个相关的“EntityOne”。应有 1 个“EntityOne”。      var objSetTwo = context.EntityTwos;      objSetTwo.MergeOption = MergeOption.NoTracking;      objSetTwo.AddObject(new EntityTwo() { ID = 2, T1 = "tt1", T2 = "tt2", T3 = "tt3" });      context.SaveChanges();      //第三种情况:有些时候,我们的EntityTwo可能已经在之前已经创建了,此处只是查询出来,用来在需要新增EntityOne时赋值给关联属性:EntityTwo,但依旧报错:“EntityOneEntityTwo”AssociationSet 中的关系处于“Deleted”状态。如果有多重性约束,则相应的“EntityOne”也必须处于“Deleted”状态。      var objSetTwo = context.EntityTwos;      var entityTwo = objSetTwo.Single(t=>t.ID==2);      var objSetOne = context.EntityOnes;      objSetOne.MergeOption = MergeOption.NoTracking;      objSetOne.AddObject(new EntityOne() { ID = 3, P1 = "pp1", P2 = "pp2", P3 = "pp3", EntityTwo = entityTwo });      context.SaveChanges();    }

只有一种情况才能正确执行新增,如下:

Model1Container context = new Model1Container();      var objSetOne = context.EntityOnes;      objSetOne.AddObject(new EntityOne() { ID = 2, P1 = "pp1", P2 = "pp2", P3 = "pp3", EntityTwo = new EntityTwo() {ID=2, T1 = "tt1", T2 = "tt2", T3 = "tt3" } });      context.SaveChanges();

说明只有同时完成新增EntityOne与关联属性EntityTwo,才能成功,但现实是这样的吗?比如:一个人先后写了几本书,那肯定是先有人这个实体,然后才会有书这个实体,每写一本书,书的作者关联属性应该是人这个实体,但按照上面的测试,新增一本书就必需新增一个人,这显然是不对的,该如何解决呢?我目前没有找到更好的解决办法,唯一的办法就是不要导航,但这又不符合面向对象原则,所以在此还请大家多多指教,谢谢!

 




广西自驾游攻略广西旅游线路大全什么时候去广西旅游最好广西跟团旅游报价多少广西旅游必去的地方是深圳欢乐谷水公园开放时间?深圳欢乐谷玛雅水公园门票价格? 玛雅水公园五一门票多少钱?2015深圳欢乐谷玛雅水公园五一门票价格? 到乌云山茶叶公园洗洗肺 玛雅水公园五一有什么好玩的?深圳欢乐谷玛雅水公园五一活动介绍? 那琴半岛地质海洋公园一日游攻略?台山海洋公园游玩要多久? 那琴半岛地质海洋公园介绍?台山海洋公园简介? 从化3月赏花去哪玩?流溪河公园有桃花开吗? 漫步同里 一个人一座城(组图) 2015中国(深圳)国际旅游博览会在哪里举行? 去承德游玩需要注意那些? 吃货福音 江浙沪周边吃蟹旅游10大地儿 秋季北京那些地方值得去?秋季北京那好玩? 去泰国旅游应该注意哪些具体事项? 泰国普吉岛好玩吗?有什么好玩的地方? 泰国有哪些特色美食? 12月份去泰国芭提雅旅游好不好? AD7891BPZ-1 Datasheet AD7891BPZ-1 Datasheet AD7745ARUZ-REEL7 Datasheet AD7745ARUZ-REEL7 Datasheet AD8610ARZ-REEL7 Datasheet AD8610ARZ-REEL7 Datasheet 四平去香港旅游团 四平去香港旅游团 四平去香港旅游团 齐齐哈尔香港旅游团 齐齐哈尔香港旅游团 齐齐哈尔香港旅游团 牡丹江到香港旅游团 牡丹江到香港旅游团 牡丹江到香港旅游团