首页 新闻 搜索 专区 学院

Entity FrameWork CodeFirst多对多关系中插入数据如何让分类不重复添加!

0
悬赏园豆:100 [已解决问题] 解决于 2013-06-27 19:23

 

这个业务场景是商品 和类别的多对多关系,一个商品有多个类别,一个类别属于多个商品。

先添加类别,然后添加商品时去多选类别。

实体类映射是这样的,类别没有导航:

问题补充:
不对第三个关系表进行干预,我在删除这个商品时,第三个关系表上这个商品和相关的类别关系也会删除,可以获得这样一个好处,又少写了好多代码
            foreach (var item in  _ProductRepository.GetProducts.Where(n => n.Categories.Where(x => x.Name == "手机").Count() > 0))             {                 _ProductRepository.Remove(item);             }             _ProductRepository.SaveChanges();


张耕明的主页 张耕明 | 初学一级 | 园豆:112
提问于:2013-06-27 13:29
< >
分享
最佳答案
0

应该控制好 category 表的 增加操作

收获园豆:90
Yu | 专家六级 |园豆:12944 | 2013-06-27 13:51

多对多会有3个表,用CodeFirst这种方式在Product选择Category时内部会在第三个表上确定关系,但是会新建类别,你说的控制Category的增加操作怎么实施。

张耕明 | 园豆:112 (初学一级) | 2013-06-27 14:06

或者手动对第三个确定关系的表进行CRUD应该可以解决,如果不手动对第三个确定关系的表进行干预有办法能做没?

张耕明 | 园豆:112 (初学一级) | 2013-06-27 14:11

@张耕明: 

1. Product选择Category(已经存在的)时内部会在第三个表上确定关系, 这个没问题

2. 会新建类别 这个肯定不会因确定关系,就会新建的,肯定你代码有增加的操作

Yu | 园豆:12944 (专家六级) | 2013-06-27 15:11

@Yu: 如果是按你的测试代码看来操作,肯定是确定关系又新增类别的

Yu | 园豆:12944 (专家六级) | 2013-06-27 15:12

@Yu: 增加Category的操作肯定有,但那不是我代码控制的,是Entity FrameWork控制的,我的代码里Product的CRUD和Category的CURD是分开的,我在执行Product的添加时要查询一个Category,这样我添加Product后EF自动把Product相关的Category添加到了数据库,而不是引用我查询出来的Category

张耕明 | 园豆:112 (初学一级) | 2013-06-27 15:35

@张耕明: 可以的话 贴多点相关的代码

MANY TO MANY  的我也做过,没你说的情况

Yu | 园豆:12944 (专家六级) | 2013-06-27 16:44

@Yu: 我封装太狠了,在原生态的情况下像这样操作并不会有我说的那个问题!

张耕明 | 园豆:112 (初学一级) | 2013-06-27 19:20
其他回答(2)
0

添加前先通过  FindByID判断一下是否存在

收获园豆:10
jerry-Tom | 园豆:4077 (老鸟四级) | 2013-06-27 16:25
0

我也碰到分类是新增的,怎么解决

温州布衣 | 园豆:189 (初学一级) | 2016-10-11 10:26
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册