前提:用的EF4,对自带的增删改查做了一层封装,其实就是把Add();SaveChage();放到了一块写成Add()。其他基本没动。
问题:test是主表,item是明细表,两表存在外键关系,明细表存放了主表ID,上图我截取的是循环明细表集合,将每个实体放入主表的 EntityCollection<PRODUCT_TEST_ITEM> PRODUCT_TEST_ITEM 集合中,因为存在主外键关系,所以这么做是没问题的,但是,循环完,test里面的PRODUCT_TEST_ITEM 集合就只有最后一天数据,不知道为什么,慢慢是多条,但就是只有最后一条?
是否运行到 Add(test)时,test中的集合由原来多条变一条?
不是,就是在走完foreach循环,出来就是最后一条
设断点调试下看看就知道是什么原因了。
还有就是test里面的PRODUCT_TEST_ITEM 集合就只有最后一天数据,不知道为什么,慢慢是多条,但就是只有最后一条?
到底是最后一天数据还是一条数据哦!!!
最后一条数据,就是循环完,只剩下列表的最后一条数
ef是有导航属性的。用主表对象就可以点出对应的外键表对象多个。。。
testEntities test = new testEntities();
List<班级> classes = test.班级.ToList();
List<学生> list = new List<学生>();
foreach (var item in classes)
{
list.AddRange(item.学生.ToList());
}
//班级是主表,学生是外键表。。
@小小高: 我理解你写的,但你这个和我要解决的问题,不是一个方向的,我的问题是:现在要通过EF保存数据,我给主表赋了值,因为主表和明细表存在外键关系,所以,我通过主表,点出明细表【以列表的形式存在在主表EntityCollection<PRODUCT_TEST_ITEM> PRODUCT_TEST_ITEM】,然后循环传过来的列表,放进点出来的这个明细表,但是,循环完,只有一条记录,就是最后那条