我在VS 2010中使用EF 3.5。我有一個返回結構的方法。在結構中有一個對象armatuur。當結構返回時,我想從armatuur實例訪問相關的對象。使用語句後如何訪問相關對象已在Entity Framework中完成?
然而
方法返回結構:
public LampPostDetail getLamppostInfo(int id)
{
LampPostDetail lpd;
lpd.xPos = 0;
lpd.ypos = 0;
lpd.armatuur = new Armatuur();
//get the info from object
using (var db = new OvisionDBEntities())
{
var objects = from o in db.Objects
where o.ObjectId == id
select o;
foreach (OVSL.Data.Object o in objects)
{
lpd.xPos = o.XCoordinatie;
lpd.ypos = o.YCoordinatie;
lpd.armatuur = o.Armatuur; //which is a table in my db
}
return lpd;
}
}
結構:
public struct LampPostDetail
{
#region [ Data Members (14)]
//lamppost info
public double? xPos;
public double? ypos;
//a lamppost can have several armaturen
public OVSL.Data.Armatuur armatuur; //is a table in my db
#endregion [ Data Members ]
}
當我的客戶這樣做:
LampPostDetail lpd = client.getLamppostInfo(id);
string brand = lpd.armatuur.producer.name; //producer is related object of armatuur
我得到的ObjectDisposedException。我知道發生這種情況是因爲LampPostDetail對象在using塊完成後被釋放。但是,我如何得到這個工作?在我將其返回給客戶端之前檢索我需要的所有信息(如品牌名稱等)不是一種選擇。
究竟是什麼行引發異常?我知道它在你的客戶端,但很難確切地說出哪一行是問題。 – tmesser
您是否有能力修改getLamppostInfo方法? – user957902
@yyy,它是生產者被要求的生產線。是的,我可以編輯該方法。 – jorrebor