Pregunta

Estoy tratando de vincular una DropDownList de ASP.net a los resultados de una consulta del marco de la entidad, sin dejar de mantener la separación de varios niveles. (es decir, no quiero que mi código de la interfaz de usuario contenga detalles de la consulta, ni que mi código de capa de datos tenga dependencias de la interfaz de usuario). Mi código subyacente en el controlador de eventos Page_Load se ve así:

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

Si bien mi código de datos se ve así (también hay una capa comercial intermedia, pero todavía no hay procesamiento allí, solo un paso):

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

Cuando llego a DocTypeDropDownList.DataBind () ;, arroja una ObjectDisposedException con el mensaje " DocTypeDropDownList.DataBind (); " ;. ¿Alguien puede aconsejarme sobre la mejor manera de abordar esto?

Gracias   Andy

¿Fue útil?

Solución

¿No tienes que separar los objetos del contexto? Por ejemplo:

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

Otros consejos

¿Por qué no usas una Lista < > ;?

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 bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top