【发布时间】:2010-02-23 08:48:31
【问题描述】:
我在构建应用程序时遇到问题。
我有以下结构,只显示了重要方面。
namespace Domain
{
public class Invoice
{
//properties
}
public class InvoiceRepository
{
public Linq2SqlContext context = new Linq2SqlContext();
public IQueryable<Invoice> GetInvoices()
{
var query = from inv in _dbctx.Invoices orderby inv.invInvoiceDate descending select GetInvoice(inv) ;
return query;
}
}
public class InvoiceService()
{
public InvoiceRepository _repository = new InvoiceRepositroy();
public IQueryable<Invoice> GetInvoices()
{
return _repository.GetInvoices();
}
}
}
namespace MyApp
{
public class UI
{
public InvoiceService _service = new InvoiceService();
public void FilterInvoices()
{
var query =
(
from i in _service.GetInvoices()
from s in _service.GetStatuses()
where i.ProjectID == _projectid &&
s.ID == i.Status
select new
{
InvoiceID = i.ID,
DocumentTotal = i.TotalDue.ToString(),
Created = i.Created,
WeekEnding = i.WeekEnding,
Status = s.staStatus
}
).Skip(_pageIndex * _pageSize).Take(_pageSize);
}
}
{
所以我想从我的服务中返回 IQueryable,这样我就可以 从客户端代码中过滤。但我想出的问题 是 FilterInvoices 方法错误与“不支持 翻译为 sql”,因为 GetInvoice 方法 用于返回 Invoice 实体(这是 LInq2 sql 层上的一层)而不是 Linq2sql Invoice 实体。
那么如何使用这种结构从我的服务中返回一个 IQueryable? 另外,我如何在存储库 GetInvoices 中排序并返回 IQureyable。
希望这是有道理的。
马尔科姆
【问题讨论】:
标签: c# linq-to-sql architecture