Entity Frameworkを使用したASP.net DropDownListのデータバインディング
-
03-07-2019 - |
質問
ASP.net DropDownListをエンティティフレームワーククエリの結果にバインドしようとしていますが、多層分離を維持しています。 (つまり、UIコードにクエリの詳細を含めたり、データレイヤーコードにUI依存関係を含めたりしたくない)Page_Loadイベントハンドラーのコードビハインドは次のようになります。
IEnumerable<Lookup> TypesLookup = Business.DocumentBO.GetDocumentTypes(_LookupTypeID);
DocTypeDropDownList.DataSource = TypesLookup;
DocTypeDropDownList.DataTextField = "Description";
DocTypeDropDownList.DataValueField = "LookupID";
DocTypeDropDownList.DataBind();
データコードは次のようになりますが(中間ビジネスレイヤーもありますが、まだ処理は行われていません-パススルーのみです):
public static IEnumerable<Lookup> GetLookups(int LookupTypeID)
{
using (VLFDocumentEntities context = new VLFDocumentEntities())
{
IEnumerable<Lookup> l = (from c in context.Lookup
where c.LookupTypeID == LookupTypeID
select c);
return l;
}
}
DocTypeDropDownList.DataBind();に到達すると、メッセージ<!> quot; DocTypeDropDownList.DataBind(); <!> quot;でObjectDisposedExceptionがスローされます。誰でもこれに取り組む最善の方法についてアドバイスできますか?
ありがとう、 アンディ
解決
コンテキストからオブジェクトを切り離す必要はありませんか?例:
IEnumerable<Lookup> l = (from c in context.Lookup
where c.LookupTypeID == LookupTypeID
select c);
foreach (Lookup lookup in l)
context.Detach(lookup);
return l;
他のヒント
リストを使用しないのはなぜですか<!> lt; <!> gt;?
public static List<Lookup> GetLookups(int LookupTypeID)
{
using (VLFDocumentEntities context = new VLFDocumentEntities())
{
return (from c in context.Lookup
where c.LookupTypeID == LookupTypeID
select c).ToList();
}
}
所属していません StackOverflow