Fehler:Die ObjectContext-Instanz wurde entsorgt und kann nicht mehr verwendet werden, für Operationen, für die eine Verbindung erforderlich
ich habe eine listbox, und wenn ich wählen Sie ein Element aus der listbox aufgerufen, wie ListofKBrands1, nehme ich diese Fehlermeldung:
ObjectContext-Instanz wurde entsorgt und kann nicht mehr verwendet werden, für Operationen, für die eine Verbindung erforderlich.
In der code-behind -, Ort der dieser Fehler:
if (co.Company != null)
mein code:
private void ListofKBrands1_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
RSPDbContext c = new RSPDbContext();
if (ListofKBrands1.SelectedItem != null)
{
ListBoxItem item = ListofKBrands1.SelectedItem as ListBoxItem;
KBrand co = item.Tag as KBrand;
if (ListofKBrands1.SelectedItem != null)
txtNewKBrand.Text = co.Name;
else
txtNewKBrand.Text = "";
int count = 0;
if (co.Company != null)
{
foreach (string a in cbCompany.Items)
{
if (a == co.Company.Name)
cbCompany.SelectedIndex = count;
count++;
}
}
else
cbCompany.SelectedIndex = 0;
}
}
bevor Fehler:
meine KBrand.cs:
public class KBrand {
[Key]
public int Id { get; set; }
public String Name { get; set; }
public virtual Company Company { get; set; }
public override string ToString() {
return Name;
}
}
Unternehmen.cs:
public class Company
{
[Key]
public int Id { get; set; }
public String Name { get; set; }
public override string ToString() {
return Name;
}
}
wenn das Unternehmen von ausgewählten KBrand null ist, wird dieser Fehler nicht angezeigt. aber wenn Unternehmen der ausgewählten KBrand nicht null ist, nehme ich diesen Fehler.wie kann ich diesen Fehler beheben ? vielen Dank im Voraus.
InformationsquelleAutor rockenpeace | 2013-07-17
Du musst angemeldet sein, um einen Kommentar abzugeben.
Company
werden sollte, lazy-loaded in Ihrem Fall. Aber die Entität, die jetzt im abgenommenen Zustand (Kontext geladenKBrand
Person jetzt entsorgt. Also, wenn Sie versuchen, Zugriff aufCompany
Eigenschaft, Entity Framework versucht entsorgt Kontext zu machen-Abfrage zum server. Das gibt Ihnen die Ausnahme.Müssen Sie Ihre
KBrand
- Entität auf den aktuellen Kontext, um zu ermöglichen, lazy-loadingODER Sie brauchen, um eager loading, haben
Company
bereits geladen ist. Etwas wie diese, wenn Sie bekommen Artikel:ich danke Ihnen sehr viel.. ich habe den ersten Vorschlag, und es Funktioniert.ich habe versucht, eine zweite über eager loading, aber es Tat nicht anerkannt.b.
generische Methode definiert im namespace
System.Data.Entity.DbExtensions
. Sie können auch verwendenInclude("Company")
stattsiehe dieser. in EF6, die Sie brauchen zu use namespace
System.Data.Entity
, daSystem.Data.Entity.DbExtensions
nicht existiert.InformationsquelleAutor Sergey Berezovskiy
Einfach auf Sergej ' s point,
Stattdessen
Dieser arbeitete für mich..
fügen Sie mithilfe von System.Daten.Entität, für die der lambda-Ausdruck arbeiten
Was soll ich tun, wenn
Include
überhaupt nicht helfen? Ich zu kämpfen mit diesem problem, jedoch ohne Erfolg...InformationsquelleAutor sriharsha KB