我不确定如何提出这个问题。我需要创建一个对象,我相信它被称为投影,它具有一个查询的结果,另外还需要查询另一个表并将该对象放入投影中。
这是我们使用HTML5,JS和PhoneGap构建的网站的C#WCF服务。
编辑:在ToList上获取错误(请参阅代码) - “方法或操作未实现。”
EDIT3:将实体对象company_deployed_files更改为IQueryable并删除了FirstOrDefault导致新的/不同的异常Message =“'Distinct'操作不能应用于指定参数的集合ResultType。\ r \ nParameter name:参数“
背景:这是一种混乱的实体模型,因为它是为Postgresql开发的,除了手工,我无法访问任何工具来更新模型。此外,即使我们这样做,数据库的一些设计问题也不允许出色的模型。换句话说,我的两个表没有关键约束(在实体模型中)来在实体模型中执行连接 - 除非有人告诉我如何 - 老实说这可能是最好的解决方案 - 但需要一些帮助。
但是让下面的代码工作将是一个很好的解决方案。
public List<FileIDResult> GetAllFileIDFromDeviceAndGroup ( int deviceID, int groupID)
{
List<FileIDResult> returnList = null;
using (var db = new PgContext())
{
IQueryable<FileIDResult> query = null;
if (deviceID > 0)
{
var queryForID =
from b in db.device_files
where b.device_id == deviceID
select new FileIDResult
{
file_id = b.file_id,
file_description = b.file_description,
company_deployed_files = (from o in db.company_deployed_files
where o.file_id == b.file_id
select o).FirstOrDefault(),
IsDeviceFile = true
};
if (query == null)
{
query = queryForID;
}
else
{
// query should always be null here
}
}
if (groupID > 0)
{
var queryForfileID =
from b in db.group_files
where b.group_id == groupID
select new FileIDResult
{
file_id = b.file_id,
file_description = b.file_description,
company_deployed_files = (from o in db.company_deployed_files
where o.file_id == b.file_id
select o).FirstOrDefault(),
IsDeviceFile = false
};
if (query != null)
{
// query may or may not be null here
query = query.Union(queryForfileID);
}
else
{
// query may or may not be null here
query = queryForfileID;
}
}
//This query.ToList(); is failing - "The method or operation is not implemented."
returnList = query.ToList ();
}
return returnList;
}
编辑2 ToList抛出异常。
我98%确定这是行:company_deployed_files =(来自db.company_deployed_files中的o,其中o.file_id == b.file_id选择o).FirstOrDefault()
结束编辑2