Вопрос

Я пытаюсь связать ASP.net DropDownList с результатами запроса структуры сущности, сохраняя при этом многоуровневое разделение.(т.е.Я не хочу, чтобы мой код пользовательского интерфейса содержал детали запроса, а код уровня данных имел зависимости от пользовательского интерфейса.) Мой код в обработчике событий 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();, он выдает исключение ObjectDisposeException с сообщением "DocTypeDropDownList.DataBind();".Может ли кто-нибудь посоветовать мне, как лучше всего справиться с этой проблемой?

Спасибо, Энди

Это было полезно?

Решение

Разве вам не нужно отделять объекты от контекста?Например:

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();
    }
}
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top