如何在域服务类中制定连接查询?

时间:2011-06-29 16:54:07

标签: silverlight linq ria domain-service-class

在域服务类中,我想在连接查询中使用两个实体:WorkerOnMachine {id(int),WorkerId(int),MachineId(int)}和Worker(WorkerId(int),Name(string) )...)

我想在域服务类中创建一个方法,该方法以下列方式返回在所选机器上运行的所有工作者(工作者 - 机器关系存储在WorkerOnMachineTable中):

public IQueryable<Worker> GetWorkerByMachineId(int machineId)
        {
            var joinedTable = from wom in this.ObjectContext.WorkerOnMachine
                              join w in this.ObjectContext.Worker on wom.WorkerId equals w.Id
                              where wom.MachineId == machineId
                              select new { w };
            return joinedTable as IQueryable<Worker>;
        }

但该方法返回一个空列表。有谁知道在域服务类中编写上述方法的正确方法是什么?

谢谢!

1 个答案:

答案 0 :(得分:1)

不要使用var,这让你感到困惑。

如上所述,joinedTables是IQueryable<AnonType>的一个实例。由于它不是IQueryable<Worker>as的强制转换返回null。

相反,写一下:

IQueryable<Worker> joinedTable = ...

然后修复:

select w;

最后:

return joinedTable;

(顺便说一句,那次加入看起来不错)。