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 回答