1
我有一個數據層類(LINQ2SQL,沒有實體框架)從數據庫如下返回行關係的擴展:LINQ-2-SQL上ToList()
public ReadOnlyCollection<UserCars> Cars
{
get
{
using (var context = new TransportopiaDataContext())
{
var result = (from car in context.UserCars
where car.UserId == UserId
select car);
return result.ToList().AsReadOnly();
}
}
}
現在,如你所知,你必須執行ToList(),因爲當您離開using()子句時,datacontext超出範圍。問題是有外鍵關係;雖然上下文仍在範圍內,但您可以這樣做:
string foo = car.Manufacturer.Name;
但是,在處理上下文後這樣做會導致錯誤。所以我的問題是:
「有沒有辦法做ToList(),這樣外鍵關係也會被擴展?」
完美,謝謝。有用。 我的第一個猜測,這是不夠的,是設置context.DeferredLoadingEnabled = false。這是否會導致數據在「var result =」子句中正確加載,但仍然沒有關係? – Dave 2012-03-04 19:12:14
@Dave:是的,將'DeferredLoadingEnabled'設置爲false只會禁用您最初返回的'UserCar'實例的後續查詢 - 因此它將停止發生上下文處置錯誤,但仍不會加載任何相關數據/表。 – BrokenGlass 2012-03-04 19:19:17