Pergunta

Estou tentando ligar um ASP.net DropDownList com os resultados de uma consulta de estrutura de entidade, mantendo ainda a separação multi-tier. (Ou seja, eu não quero o meu código de UI para conter consulta detalhes, nem o meu código de camada de dados para ter UI dependências.) Meu código-behind na aparência do manipulador de eventos Page_Load assim:

        IEnumerable<Lookup> TypesLookup = Business.DocumentBO.GetDocumentTypes(_LookupTypeID);
        DocTypeDropDownList.DataSource = TypesLookup;
        DocTypeDropDownList.DataTextField = "Description";
        DocTypeDropDownList.DataValueField = "LookupID";
        DocTypeDropDownList.DataBind();

Enquanto meus olhares de código de dados como este (há uma camada intermediária de negócios, bem como, mas não há nenhum processamento lá ainda - apenas um pass-through.):

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

Quando eu chegar ao DocTypeDropDownList.DataBind () ;, ele lança uma ObjectDisposedException com a mensagem "DocTypeDropDownList.DataBind ();". Alguém pode me aconselhar sobre a melhor maneira de lidar com isso?

Obrigado, Andy

Foi útil?

Solução

Você não tem que retirar os objetos do contexto? Por exemplo:

IEnumerable<Lookup> l = (from c in context.Lookup
                        where c.LookupTypeID == LookupTypeID
                        select c);
foreach (Lookup lookup in l)
  context.Detach(lookup);
return l;

Outras dicas

Por que você não apenas usar um 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();
    }
}
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top