這是基於一個名爲Task
一個波科類一個簡單的項目:包括衍生財產爲LINQ到實體查詢
class Program
{
static void Main(string[] args)
{
using (MyDbContext ctx = new MyDbContext())
{
// first query
DateTime compareDate = DateTime.Now + TimeSpan.FromDays(3);
var res = ctx.Tasks.Where(t => t.LastUpdate < compareDate).ToList();
// second query
res = ctx.Tasks.Where(t => t.ShouldUpdate).ToList();
}
}
}
public class MyDbContext : DbContext
{
public DbSet<Task> Tasks { get; set; }
}
public class Task
{
public int ID { get; set; }
public DateTime LastUpdate { get; set; }
public bool ShouldUpdate
{
get
{
return LastUpdate < DateTime.Now + TimeSpan.FromDays(3);
}
}
}
我想要做的是查詢上下文dbset
包括where子句的ShouldUpdate
在派生財產。
「第一個查詢工作正常」(我不能寫在一行中,但它並不重要)。如您所知,我們在「第二個查詢」上得到一個NotSupportedException
,並帶有以下消息: LINQ to Entities不支持指定的類型成員'ShouldUpdate'。僅支持初始化程序,實體成員和實體導航屬性。
這是正確的,我可以理解爲什麼會發生這種情況,但我需要將派生的信息封裝在Task
對象中,以便我可以在網格中顯示屬性或在其他位置使用它,而不重複其背後的邏輯。
有沒有一個聰明的技術來做到這一點?
注意:ShouldUplate
屬性的技術名稱是什麼?得到的?如何計算?計算的?
我有一個類似的問題,但即使當我嘗試使用上面的靜態表達式時,我也會收到「不支持」的錯誤。任何想法爲什麼這可能是? – MysteriousWhisper 2014-04-29 16:37:15
你能舉個例子嗎? – 2014-06-06 09:35:15