我在SQL Server中一個簡單的表結構:創建一個可查詢的屬性所產生的LINQ to SQL實體
一個表中存儲的自行車(自行車)的列表和第二表存儲自行車的車主的歷史列表(擁有者)。
使用Linq 2 SQL我生成了一個模型,該模型爲我提供了一個'Bike'實體,它與'Owner'的一對多關係稱爲'HistoricalOwners'。
到目前爲止好...
現在我有我的興趣在當前所有者許多查詢。當前所有者是所有者表中的最新條目。
repo.Bikes().Where(b => b.HistoricalOwners.OrderByDescending(o => o.Date).First().Name == "Joe")
這有效,但它有點醜,並沒有真正說我在問什麼。在我的Bike實體上創建一個'CurrentOwner'屬性並查詢它會很好。
public Owner CurrentOwner
{
get
{
return HistoricalOwners.OrderByDescending(o => o.Date).First();
}
}
然後,我可以查詢這樣的:
repo.Bikes().Where(b => b.CurrentOwner.Name == "Joe")
這將編譯,但在運行時cources與它會失敗:
成員 'CurrentOwner' 沒有支持轉換爲SQL。
這是總的意義。
是否有人知道我可能能夠創建一個CurrentOwner的方式,讓這個查詢工作?
我做了一些研究,讓CurrentOwner返回一個表達式樹而不是一個實例,但是我從來沒有得到任何我很滿意的地方。
然後我想知道是否可以爲我的linq 2 sql repository添加一個額外的關係給CurrentOwner並將它限制爲一對一。但我似乎無法用linq 2 sql做到這一點。我認爲我可以用Linq 2實體做到這一點,但目前這不是一種選擇。
任何人有任何想法我可以做這項工作?
由於提前,
RMK
這不會起作用,它與First()沒有什麼不同,它仍然不知道如何將CurrentOwner轉換爲SQL,因爲CurrentOwner是一個屬性,因此無法轉換爲表達式 – RMK 2010-10-29 15:56:35
您是否試過它作爲一種方法呢? – 2010-10-30 02:05:08
這也行不通 – RMK 2010-10-30 19:41:42