我有兩個表的研究和系列。系列會返回到研究中,因此一項研究包含可變數量的系列。 每個系列項目有一個Deleted
列表示它已從數據庫中邏輯刪除。如何在Linq-to-SQL實體類中創建自定義屬性?
我試圖在Study類中實現一個Deleted
屬性,只有當所有包含的Series都被刪除時才返回true。 我使用O/R設計生成的類,所以增加了以下的用戶可修改的局部類研究類型:
public bool Deleted
{
get
{
var nonDeletedSeries = from s in Series
where !s.Deleted
select s;
return nonDeletedSeries.Count() == 0;
}
set
{
foreach (var series in Series)
{
series.Deleted = value;
}
}
}
這給出了一個異常「的成員‘PiccoloDatabase.Study.Deleted’沒有支持到SQL的轉換「。當執行這個簡單的查詢,調用獲得:
IQueryable<Study> dataQuery = dbCtxt.Studies;
dataQuery = dataQuery.Where((s) => !s.Deleted);
foreach (var study in dataQuery)
{
...
}
在此基礎上http://www.foliotek.com/devblog/using-custom-properties-inside-linq-to-sql-queries/,我嘗試以下方法:
static Expression<Func<Study, bool>> DeletedExpr = t => false;
public bool Deleted
{
get
{
var nameFunc = DeletedExpr.Compile();
return nameFunc(this);
}
set
{ ... same as before
}
}
我得到相同的異常,當運行查詢時,沒有支持翻譯成SQL。 ( lambda表達式的邏輯是無關緊要的 - 只是試圖通過例外。)
我是否缺少一些基本屬性或某些東西來允許轉換爲SQL?我已經閱讀了關於這個異常的大部分帖子,但是沒有任何內容看起來完全適合我的案例。
不應該是nonDeletedSeries.Count()== 0? – Ruslan 2012-07-26 16:58:52
@Ruslan - 是的,謝謝。固定。 – 2012-07-26 18:07:45
錯誤發生在哪裏?在設置或獲得?就像「在以下20行代碼中存在錯誤,幫助我」不會給我們太多的幫助......異常的確切細節也是有益的 – 2012-07-26 18:14:27