Question

J'essaie de lier une DropDownList ASP.net aux résultats d'une requête du cadre d'entité, tout en maintenant une séparation à plusieurs niveaux. (Par exemple, je ne veux pas que mon code d'interface utilisateur contienne des détails de requête, ni que mon code de couche de données ait des dépendances d'interface utilisateur.) Mon code-behind dans le gestionnaire d'événements Page_Load ressemble à ceci:

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

Bien que mon code de données ressemble à ceci (il existe également une couche de gestion intermédiaire, mais aucun traitement n'y est encore effectué - une simple transmission est nécessaire.):

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

Quand j'arrive à DocTypeDropDownList.DataBind () ;, il lève une exception ObjectDisposedException avec le message & "DocTypeDropDownList.DataBind (); &". Quelqu'un peut-il me conseiller sur la meilleure façon de s'y attaquer?

Merci,   Andy

Était-ce utile?

La solution

Ne devez-vous pas détacher les objets du contexte? E.g:

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

Autres conseils

Pourquoi n'utilisez-vous pas simplement une liste < >?

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();
    }
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top