VS2010でEF3.5を使用しています。構造体を返すメソッドがあります。構造体にはオブジェクトarmatuurがあります。構造体が返されたときに、armatuurインスタンスから関連オブジェクトにアクセスしたいと思います。
でも
構造体を返すメソッド:
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が発生します。これは、usingブロックが終了した後にLampPostDetailオブジェクトが破棄されるために発生することを理解しています。しかし、どうすればこれを機能させることができますか?クライアントに返す前に必要なすべての情報(ブランド名など)を取得することはできません。