我的實體子句上動態屬性具有從其他屬性LINQ(NHibernate的),其中在SQL
public class MyClass
{
public DateTime Deadline { get; set; }
public Severity Severity
{
return (DateTime.Now - Deadline < new TimeSpan(5, 0, 0, 0)) ? Severity.High : Severity.Low;
}
}
衍生的特性是有一種方法可以修改以下
return repository.Query().Where(myClass => myClass.Severity == High);
所以where子句在sql中而不是在代碼中計算?
我試圖做這樣的事情,但都無濟於事
public class MyClass
{
public DateTime Deadline { get; set; }
public Func<MyClass, bool> SeverityFunc = (DateTime.Now - Deadline < new TimeSpan(5, 0, 0, 0)) ? Severity.High : Severity.Low;
public Severity Severity
{
return SeverityFunc.Invoke(this);
}
}
return repository.Query().Where(myClass => myClass.SeverityFunc(myclass) == High);
我猜是因爲FUNC不能進行評估,以SQL。有一些其他的方式來做到這一點,並且沒有重複計算的結束了對嚴重
讚賞任何幫助,TA
編輯:這是什麼我嘗試做一個簡化版本,我正在尋找的答案是涵蓋了這個理論,而不是一個具體的解決方案(雖然仍然受歡迎)。我對什麼是可能的,以及實現這種事情的最佳實踐感興趣。
Andrew