0
我有两个类映射我的数据库的两个表:左外连接的实体(实体或复杂类型不能在LINQ到实体查询构造。)
public class Product
{
public int Id { get; set; }
public string Token { get; set; }
public string Name { get; set; }
public decimal Value { get; set; }
}
public class Ticket
{
public int Id { get; set; }
public string SerialNumber { get; set; }
public string ProductToken { get; set; }
public Product Product { get; set; }
}
对于某些领域的原因,Product和Ticket在逻辑上是链接的,换句话说,它们没有链接到可以由EF映射的数据库关系中,它们将在我的应用程序中链接到一个linq查询,该查询必须在SQL外部左连接。从这里,我做了以下查询:
IQueryble<Ticket> query = from ts in context.Tickets
join ps in context.Products
on ts.ProductToken equals ps.Token into p
select new Ticket
{
Id = t.Id,
SerialNumber = t.SerialNumber,
ProductToken = t.ProductToken,
Goal -----> Product = p.FirstOrDefault()
};
该查询保持为IQueryble,因为在此之后,查询不断改进与过滤器。
问题是,当我运行下面的代码:
var tickets = query.OrderBy(t => t.SerialNumber).ToList();
我得到了以下错误:
"The entity or complex type 'Model.Ticket' cannot be constructed in a LINQ to Entities query."
那么,怎样才能达到我我的目标?
不错的作品,只是一个注意事项,你错过了序号:) – mattytommo 2012-04-17 17:02:14
我不明白为什么我有创建一个与POCO类相同的新类,并且如果您在选择返回中创建“new myTicket”,为什么IQueryble保持相同(Ticket),它将运行,需要一些转换? – 2012-04-17 17:04:50
@ViniciusOttoni,IQueryable是一个错字,它应该是myTicket那里,你不能投影到映射实体的原因是因为一个实体代表一个数据库表。使用项目你选择了一部分表格(一些列),这对于数据来说是无效的状态 –
Habib
2012-04-17 17:07:26