2013-05-09 33 views
0

我有两个表,'事件'和'服务',有一个一对多的关系(每个事件至少有一个服务)。LINQ查询内部连接DbContext实体IQueryable

我正在编写一个C#控制台应用程序,它将提取事件的一个子集,然后提取相应的服务。

我有一种方法将事件提取到一个IQueryable<Event>对象中,并且它按预期工作。但是,当我加入IQueryable<Event>对象到IQueryable<Service>(如下所示)时,我的结果对象包含引用不同的上下文,我只希望它包含IQueryable<Service>结果。

有没有更好的方法来做到这一点?

这里是我的 'ExtractServices' 的方法:

public IQueryable<Service> ExtractServices(IQueryable<Event> events) 
{ 
    using (var preCertEntities = new PreCertEntities()) 
    { 
     IQueryable<Service> services = from s in preCertEntities.Services 
             orderby s.EventId 
             select s; 

     services = from s in services 
        join e in events on s.EventId equals e.EventId 
        select s; 

     return services; 
    } 

回答

2

你不应该需要提取这样的亲子关系 - EF会为你:

public IQueryable<Service> ExtractServices(IQueryable<Event> events) 
{ 
    return events.SelectMany(e => e.Services).OrderBy(s => s.EventId); 
}