1

多層分離を維持しながら、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(); に到達すると、「DocTypeDropDownList.DataBind();」というメッセージとともに ObjectDisposedException がスローされます。これに取り組むための最良の方法について誰かが私にアドバイスできますか?

ありがとう、アンディ

4

2 に答える 2

2

オブジェクトをコンテキストから切り離す必要はありませんか? 例えば:

IEnumerable<Lookup> l = (from c in context.Lookup
                        where c.LookupTypeID == LookupTypeID
                        select c);
foreach (Lookup lookup in l)
  context.Detach(lookup);
return l;
于 2009-01-02T17:14:59.917 に答える
1

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();
    }
}
于 2014-01-27T11:50:55.723 に答える