我有一個Linq to SQL類。Linq to SQL集合不填充
在我的數據庫中有一對多的關係。
該關係在設計器中正確映射,並且在設計器中創建了EntitySet<>
屬性。
當我運行的代碼中,EntitySet<>
不與任何數據填充,即使有相關的記錄,他們不填充到EntitySet<>
我缺少某些屬性或設置?我必須自己寫查詢嗎?我覺得我失去了一些明顯的東西。
這裏是設計師代碼:
[Association(Name = "Bar_Foo", Storage = "_Foo", ThisKey = "ID", OtherKey = "BarID")]
[DataMember(Order = 15, EmitDefaultValue = false)]
public EntitySet<Foo> Foos
{
get
{
if ((this.serializing && (this._Foo.HasLoadedOrAssignedValues == false)))
{
return null;
}
return this._Foo;
}
set
{
this._Foo.Assign(value);
}
}
這是我試圖訪問的EntitySet <>代碼:
partial void OnCreated()
{
foreach (Foo foo in Foos)
{
foo.DoSomething();
}
}
我的情況的更多信息:
所以,從上面我有一個班級酒吧與Foo的集合。我想要做的是通過WCF服務將Bar傳遞給UI。以下是我的主要服務電話:
public class TheService : ITheService
{
public List<Bar> GetBars()
{
try
{
using (var db = new BarDataContext())
{
List<Bar> Bars = new List<Bar>();
Bars = (from B in db.Bars
select B).ToList();
return Bars;
}
}
catch (Exception ex)
{
throw new FaultException(ex.Message + " Something in GetBars() Stack Trace: " + ex.StackTrace);
}
}
}
目前,當服務返回酒吧的每個酒吧內FOOS爲空。
如果我在Bar中查看Foos的屬性,我會得到一個空引用異常。
我嘗試運行在OnCreated方法查詢,以填補FOOS,目前酒吧的ID爲0
更新查詢仍然不能正常工作:
using (var ctx = new BarDataContext())
{
List<Bar> Bars= new List<Bar>();
Bars= (from B in ctx.Bars
select B).ToList();
foreach (Bar bar in Bars)
{
bar.Foos= (from B in ctx.Bars
where B.ID == bar.ID
select B.Foos).SingleOrDefault();
}
return Bars;
}
這當我嘗試從Bar中查詢Foos時,代碼會生成一個空引用異常。
編輯:
上面的代碼神奇不再扔空引用異常,不知道爲什麼。我發現有趣的是,你甚至不需要設置bar.Foos在上面的查詢中,你可以將Foos查詢放入一個永遠不會使用的變量中,它將填充Bar.Foos屬性,僅僅因爲你看了FOOS。讓我想起薛定諤的貓。
你可以發佈你正在使用的代碼,這將有助於很多在這種情況下。 – 2010-01-15 19:06:47
請張貼一些代碼,以便我們可以更好地瞭解問題 – 2010-01-15 19:11:30