加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – LINQ多对多关系:解决方案?

发布时间:2020-12-15 08:14:38 所属栏目:百科 来源:网络整理
导读:LINQ到目前为止一直非常优雅,但是为了执行基本的m2m查询,它提供了我无法立即看到的解决方案. 更糟糕的是,虽然它适用于任何其他表关系,但LINQ并没有给我一个关于我的m2m表的类结构的关联. 所以我可以做的事情 artwork.artists.where(...)//orartist.Artworks.
LINQ到目前为止一直非常优雅,但是为了执行基本的m2m查询,它提供了我无法立即看到的解决方案.

更糟糕的是,虽然它适用于任何其他表关系,但LINQ并没有给我一个关于我的m2m表的类结构的关联.

所以我可以做的事情

artwork.artists.where(...)
//or
artist.Artworks.add(artwork)

但我不能这样做

artwork.artowrks_subjects.tagSubjects.where(...)
//or
tagSubject.artworks_subjects.add(artwork)

alt text http://img299.imageshack.us/img299/257/20090902122107.png

是否有解决此限制的常见模式?

解决方法

我在LINQ2SQL中使用M2M的方式:

>将表拖到构建器中,
就像你在问题中表现出来一样
>删除之间的关系
artwork_subject和艺术品
>创建一个新的关系FROM
artwork_subject TO艺术品
>点击新关系获取
它的属性
>改变
从OneToMany到.的基数
OneToOne(因为ManyToOne没有
存在)
>打开子属性
部分并将名称字段更改为
让它变得奇异(Artworks to
艺术品)

现在tagSubject实体将拥有artwork_subjects的集合,而artwork_subject将具有类型为artwork的属性.所以你现在可以制作一个LINQ表达式

var x = dbcontext.tagSubjects.Single(s=>s.name=="Landscape").
    Artwork_Subjects.
    Select(as=>as.Artwork.Name);

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读