我正在制作Silverlight WCF RIA Services应用程序。虽然,我试图尝试不同的方法在数据库中使用多个表。 目前,我正在尝试连接域服务类中的表并将其返回给服务代理。我从位于以下位置的模板开始了这个项目: http://simplemvvmtoolkit.codeplex.com/wikipage?title=WCF%20RIA%20Services
我正在尝试加入以下表格:
public IQueryable<Invoice> GetInvoices()
{
return (from i in this.ObjectContext.Invoices
join o in this.ObjectContext.otherTable equals condition
join s in this.ObjectContext.otherTable equals condition
select i);
}
这会根据给定的条件正确连接表。但实际上我需要从i.Invoices Tables&amp; s.otherTable。 任何使这个投影在DomainServiceClass.cs中工作的建议?
来自用户的示例代码“Chris”建议:
public class Invoice_PM
{
[Key]
public int InvoiceId { get; set; }
public string PaymentNum { get; set; }
public DateTime? PaymentExpDate { get; set; }
public DateTime? InvoiceDateTime { get; set; }
[Include, Association("name", "InvoiceID", "InvoiceDateTime")]
public IEnumerable<InvoiceSoldToShipTo_PM> SoldToShipTo { get; set; }
}
答案 0 :(得分:0)
您的LINQ查询仅使用联接基本上过滤发票,因为您在结尾处选择了i变量。我想这篇文章的答案将为您提供您想要的结果:
Error: The entity or complex type cannot be constructed in a LINQ to Entities query
我建议您创建一个包含要加载的所有属性的自定义类,并将LINQ语句的结果选择到自定义类中。
自定义类:
public class CustomInvoice
{
public int InvoiceID { get; set; }
public int InvoiceNumber { get; set; }
public int ProductID { get; set; }
public string ProductName { get; set; }
public int InvoiceID { get; set; }
public string CustomerName { get; set; }
}
域名服务功能:
public IQueryable<CustomInvoice> GetInvoices()
{
return (from i in this.ObjectContext.Invoices
join p in this.ObjectContext.Product equals condition
join c in this.ObjectContext.Customer equals condition
select new CustomInvoice
{
InvoiceID = i.ID,
InvoideNumber = i.InvoiceNumber,
ProductID = p.ID,
ProductName = p.Name,
CustomerID = c.ID,
CustomerName = c.Name
}; );
}
我还没有尝试过测试过这段代码,但这个想法应该会让你在那里。