【发布时间】:2008-10-10 08:32:46
【问题描述】:
我在我的 Linq-to-SQL 类上创建了一些额外的功能,以便在我开发应用程序时更轻松。例如,我定义了一个从合同列表中检索活动合同的属性。但是,如果我尝试在 lambda 表达式或一般查询中使用此属性,它要么会引发异常,即没有与该属性匹配的 SQL 语句,要么会为每个项目生成一个查询(= 到服务器的大量往返)。
查询本身并不过分复杂 f.ex:
var activeContracts = customer.Contracts.Where(w => w.ContractEndDate == null);
而我希望它读作:
var activeContracts = customer.ActiveContracts;
我这样做的主要原因是因为它可以最大限度地减少我的逻辑错误,如果我将来想要更改定义有效合约的内容,我不必重做大量代码。
有没有办法在属性上指定它应该生成什么 SQL。或者有没有办法确保它在如下查询中可用?
var singleContractCustomers = db.Customers.Where(w => w.ActiveContracts.Count() == 1);
【问题讨论】:
-
您的房产类型是什么?
-
我用过 bool 等简单的和 IQueryable
等复杂的,结果大致相同。
标签: c# .net linq linq-to-sql