Datenbindung ASP.net Dropdown mit Entity Framework
-
03-07-2019 - |
Frage
Ich versuche, eine ASP.net Dropdownlist der Ergebnisse einer Entity Framework-Abfrage zu binden, während sie noch mehrstufigen Trennung beibehalten wird. (D. H Ich möchte nicht meine UI-Code-Abfrage Details enthalten, noch meine Data Layer Code UI Abhängigkeiten haben) Mein Code-behind in dem Ereignishandler Page Load sieht wie folgt aus:
IEnumerable<Lookup> TypesLookup = Business.DocumentBO.GetDocumentTypes(_LookupTypeID);
DocTypeDropDownList.DataSource = TypesLookup;
DocTypeDropDownList.DataTextField = "Description";
DocTypeDropDownList.DataValueField = "LookupID";
DocTypeDropDownList.DataBind();
Während meine Daten Code sieht wie folgt aus (es gibt eine Zwischen Business-Schicht als gut, aber es gibt keine Bearbeitung dort noch - nur einen 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;
}
}
Als ich in die DocTypeDropDownList.DataBind () erhalten ;, es wirft einen ObjectDisposedException mit der Meldung "DocTypeDropDownList.DataBind ();". Kann mir jemand raten auf dem besten Weg, dies zu bewältigen?
Danke, Andy
Lösung
Sie nicht, müssen Sie die Objekte aus dem Kontext lösen? Z. B:
IEnumerable<Lookup> l = (from c in context.Lookup
where c.LookupTypeID == LookupTypeID
select c);
foreach (Lookup lookup in l)
context.Detach(lookup);
return l;
Andere Tipps
Warum Sie nicht nur verwenden, um eine 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();
}
}