我有一个实体SQL查询,它根据结果值创建一个实体。
问题是实体未附加到上下文。使用ObjetQuery的Web控件要求将实体附加到上下文,以通过导航控件检索支持数据。
手动添加结果会将实体附加到上下文,但ObjectQuery将用作数据源。不幸的是,手动将实体附加到上下文不是一个选项,因为Telerik控件(RadGrid)需要对象查询以获得其他功能(排序,过滤等)。
以下是生成对象查询的代码(该函数是生成的ObjectContext的方法):
public ObjectQuery<Invoice_Payment> getInvoicePaymentList(int PaymentID)
{
ObjectQuery<Invoice_Payment> oq = this.CreateQuery<Invoice_Payment>(@"SELECT VALUE DotNetNuke.Modules.Collections.Model.Invoice_Payment(Inv.ID, @PaymentID, IP.Amount, IP.TimeStamp, IP.LastModifiedBy, Inv.Company)
FROM Collections.Invoices As Inv Left Outer Join
Collections.Invoice_Payments As IP On IP.Invoice = Inv.ID && IP.Payment = @PaymentID Left Outer Join
Collections.Payments As P On P.ID = @PaymentID
WHERE (Inv.Invoice_Outstanding_Balance.ID is not null && Inv.Customer = P.Customer) || IP.Payment is not null
ORDER BY Inv.Document_Date
", new ObjectParameter("PaymentID", PaymentID));
oq = oq.Include("InvoiceDetails").Include("PaymentDetails");
oq.MergeOption = MergeOption.OverwriteChanges;
return oq;
}
我做错了什么或者我可能错误配置了哪些实体不会附加到调用上下文?
修改
经过一番调查后,我发现我的问题并没有被隔离到这一个实体类型,而是使用 命名类型构造函数 实例化的所有实体类型。我的问题更好地定义为:
如何在执行查询时将实体SQL中使用命名类型构造函数实例化的实体附加到上下文中?