请问怎样实现这种关系查找

Topics: Developer Forum
Dec 16, 2010 at 5:40 AM

var p=Models.Product.Find(i=>i.ProductCategory.ParentID==1);

ProductCategory和Product是1对多的关系,Ado.net EF上这样写是可以的,但用dbentry的话会报错,因为ParentID是空的。请问怎样实现这样的查找效果?

Coordinator
Dec 16, 2010 at 6:24 AM

是的,DbEntry不支持这种写法,等价的写法大体如下:

var result = Product.Find(p => p.ProductCategory.Id.InStatement(ProductCategory.Where(x => x.ParentID == 1).GetStatement(x => x.Id)));

这种写法只在最新源代码里有效,你用的版本如果不完全支持,但是支持 In 操作,也可以自己构造 In,如果都不支持,就只能自己用SQL取了。