首页 新闻 会员 周边 捐助

EF中,存在外键关系的两表的添加问题

0
悬赏园豆:15 [已关闭问题] 关闭于 2016-09-22 11:18

前提:用的EF4,对自带的增删改查做了一层封装,其实就是把Add();SaveChage();放到了一块写成Add()。其他基本没动。

问题:test是主表,item是明细表,两表存在外键关系,明细表存放了主表ID,上图我截取的是循环明细表集合,将每个实体放入主表的 EntityCollection<PRODUCT_TEST_ITEM> PRODUCT_TEST_ITEM 集合中,因为存在主外键关系,所以这么做是没问题的,但是,循环完,test里面的PRODUCT_TEST_ITEM 集合就只有最后一天数据,不知道为什么,慢慢是多条,但就是只有最后一条?

行进的主页 行进 | 初学一级 | 园豆:105
提问于:2016-09-05 21:34
< >
分享
所有回答(3)
0

是否运行到 Add(test)时,test中的集合由原来多条变一条?

Mars楚洋 | 园豆:111 (初学一级) | 2016-09-06 00:07

不是,就是在走完foreach循环,出来就是最后一条

支持(0) 反对(0) 五少 | 园豆:183 (初学一级) | 2016-09-06 11:06
0

设断点调试下看看就知道是什么原因了。

还有就是test里面的PRODUCT_TEST_ITEM 集合就只有最后一天数据,不知道为什么,慢慢是多条,但就是只有最后一条?

到底是最后一天数据还是一条数据哦!!!

雨之秋水 | 园豆:649 (小虾三级) | 2016-09-06 09:19

最后一条数据,就是循环完,只剩下列表的最后一条数

支持(0) 反对(0) 五少 | 园豆:183 (初学一级) | 2016-09-06 11:07
0

ef是有导航属性的。用主表对象就可以点出对应的外键表对象多个。。。

 

小小高 | 园豆:1297 (小虾三级) | 2016-09-06 09:41

 testEntities test = new testEntities();
            List<班级> classes = test.班级.ToList();
            List<学生> list = new List<学生>();
            foreach (var item in classes)
            {
                list.AddRange(item.学生.ToList());
            }

//班级是主表,学生是外键表。。

 

支持(0) 反对(0) 小小高 | 园豆:1297 (小虾三级) | 2016-09-06 09:42

@小小高: 我理解你写的,但你这个和我要解决的问题,不是一个方向的,我的问题是:现在要通过EF保存数据,我给主表赋了值,因为主表和明细表存在外键关系,所以,我通过主表,点出明细表【以列表的形式存在在主表EntityCollection<PRODUCT_TEST_ITEM> PRODUCT_TEST_ITEM】,然后循环传过来的列表,放进点出来的这个明细表,但是,循环完,只有一条记录,就是最后那条

支持(0) 反对(0) 五少 | 园豆:183 (初学一级) | 2016-09-06 11:15
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册