100天土鸡饲养计划(19)

今天周六,但是因为台风的原因,需要补班,其实我好多时候周六都会自己来加班,但是自己加班和被要求上班感觉上还是差太多,总有一种被强迫的感觉...

今天最重要的收获是好好折腾了一下EF~

是这样的,有3个表A,B,C,A表和B表是一对一关系,B表和C表是多对多关系,他们都有关联属性。现在我需要生成一个object的,这个object里有A,B,C这3个表的部分数据,且需要将这部分数据重命名。如果是写SQL的话,就非常简单,但是用EF完全不知道怎么做,因为大多数时候,都只会查其中一个表,或者其中两个表的数据,而这两个表是有关联属性的,所以还好,一对一的一般情况如下

  context.a.Select(a=> new 
                    <span style="white-space:pre">	</span>{
 <span style="white-space:pre">			</span>anewname = a.name,
<span style="white-space:pre">			</span>bnewname = a.b.name
<span style="white-space:pre">			</span>}));


多对多的一般情况如下

  context.b.SelectMany(b => b.c.Select(c => new
                            {
                                bnewname= b.name,
                                cnewname = c.name
                            }));
上面2种情况都只是涉及2个表的数据,当我按照多对多的关系写出下面的语句时,就报错了

 context.b.SelectMany(b => b.c.Select(c => new
                            {
<span style="white-space:pre">				</span>anewname = b.a.name,
                                bnewname= b.name,
                                cnewname = c.name
                            }));
说实话,有点懵逼,感觉本来A和B之间就是就是一对一的关系,那知道了b,肯定就能推导a啊!但实际上就是会报错,所以我尝试了一下午,找到了一种写法,如下

我暂时还没理解为什么要这么写,不过好在是可以跑通的,只有有时间,好好的研究下EF的工作原理了~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值