Entity Frameworkを使用したASP.net DropDownListのデータバインディング

3-tier asp.net data-binding entity-framework

質問

まだ多層分離を維持しながら、ASP.netのDropDownListをエンティティフレームワーククエリの結果にバインドしようとしています。 (つまり、私のUIコードにクエリの詳細を含めたり、Data LayerコードにUIの依存関係を持たせたりすることは望ましくありません)

        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();に到達すると、メッセージ "DocTypeDropDownList.DataBind();"と共に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;

人気のある回答

どうしてList <>を使わないのですか?

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();
    }
}


Related

ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ
ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ