質問

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();
    }
}
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top