首页 新闻 会员 周边

关于EF 的多表联查

0
悬赏园豆:15 [已解决问题] 解决于 2015-05-15 09:04

我查了三种方法

1.Inclue(string path) 这个好像要数据库建立外键才行,

2.EF的Join方法 这个好像只能Join进去一个表而且最后还要构建一个新对象

3.from a in XX join XX, where XX 这种方法可以join多张表,好像不能动态的Where,比如如果输入了姓名就 &a.name=XX 之类的很多条件,

难道是还要写SQL语句的节奏吗...

慕容枫的主页 慕容枫 | 初学一级 | 园豆:110
提问于:2015-05-14 17:17
< >
分享
最佳答案
0

具体问题具体解决。没有具体问题只好告诉你,EF很健康,身体棒棒的,你就不用为EF担心了。

收获园豆:15
爱编程的大叔 | 高人七级 |园豆:30839 | 2015-05-14 17:24

...还需要怎么具体啊,我现在就是需要四表联查,然后还有动态条件,然后应该怎么做呢,用什么方法

慕容枫 | 园豆:110 (初学一级) | 2015-05-14 17:25

@慕容枫: 

var query = from c in TableA

                  join d in TableB on c.ID equals d.id

                 .....

你想怎样?

不举例谁知道你碰到啥问题,你举个具体的问题出来,大家帮你解决了,其他你就可以举一反三了。

爱编程的大叔 | 园豆:30839 (高人七级) | 2015-05-14 17:27

@爱编程的大叔: 对,这个方法我也知道啊,但是我现在就是有多个条件啊,比如选择分类,然后根据分类查询,不选就全查,但是这个语法好像没办法拼接动态的where啊

慕容枫 | 园豆:110 (初学一级) | 2015-05-14 17:29

@慕容枫: 动态查询是可以的

1、PredicateBuilder,或者你Google Linqkit

2、Dynamic LINQ。

这些都是有人探索过的课题。

System.Data.Linq.Dynamic这个命名空间里面有动态查询的东西。

 

用法就是好像这样的

var query= list.where("Name='张三'")

 

还有啊,动态查询是动态查询,你不要和多表联查混起来。

问题要分开解决,合在一起就混了。

爱编程的大叔 | 园豆:30839 (高人七级) | 2015-05-14 17:31

@爱编程的大叔: 

用where方法的话,要放在最后面吧..可那些字段DTOMember这里面是没有的,我用PredicateBuilder,他这个是query=quert.And(XXX)的,但是像from a where XX这种不能拼接出一个动态的东西吗,

我刚才搜索Dynamic LINQ看到了一个方法

好像也是可行,不过看起来还是有些繁琐...

慕容枫 | 园豆:110 (初学一级) | 2015-05-14 17:47

@慕容枫: 我真是没话可说了。

你就不能干脆点举个例子,你想怎样,具体的例子。

你能说的出来的要求,自然可以达到。

爱编程的大叔 | 园豆:30839 (高人七级) | 2015-05-14 20:15

@爱编程的大叔: 我上面都说了,就是一个多个条件的会员的查询,然后要显示会员的几个外建属性,

慕容枫 | 园豆:110 (初学一级) | 2015-05-15 08:38

@爱编程的大叔: 解决了,分成两部操作就行了,不能写在一起...不过如果from a 这种语法的where要是能像where方法的参数一样是动态的就好了

慕容枫 | 园豆:110 (初学一级) | 2015-05-15 09:03
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册