| 

.NET C# Java Javascript Exception

6
Beim handlen von n:m Beziehungen innerhalb von Entity Framwork (4.2) stoße ich derzeitig auf folgendes Problem:

Ich habe zwei Klassen, die jeweils eine Liste der anderen Klasse beinhalten, dies sollte eine auflösenden Tabelle erstellen:

public class User
{
public User()
{
Companies= new HashSet<Company>();
}
public virtual ICollection<Company> Companies{ get; set; }
}


public class Company
{
public Company()
{
Users = new HashSet<User>();
}
public virtual ICollection<User> Users { get; set; }
}


Im OnModelCreating definiere ich die Beziehung wie folgt:

modelBuilder.Entity<Company>()
.HasMany(t => t.Users)
.WithMany(t => t.Companies)
.Map(m => m.ToTable("Company_User"));

modelBuilder.Entity<User>()
.HasMany(t => t.Companies)
.WithMany(t => t.Users)
.Map(m => m.ToTable("Company_User"));


Die Datenbank legt eine User_Tabelle, eine Company-Tabelle und eine Company_User Tabelle richtig an.

Wenn ich nun einer Company einen User zufüge, wird dieser dann auch richtigerweise mit
ctx.Company.Include(s => s.Users).ToList()
geladen.

Scheint also alles ok. Bis hier hin, denn wenn ich meinen Code neu kompiliere und ausführe, ohne das sich das Schema geändert hat (also DB wird nicht neu geschrieben), werden die User nicht mehr mitgeladen. Also die Liste von Usern, an der Company ist null.

Wo ist mein Problem? Hatte jemand ähnliche "Phänomene"?
23.02.2012
Mario Priebe 6,0k 3 9
Okay, hat sich erledigt, das Problem lag daran, das ich im ein FilteredDbSet anstelle des normalen DbSet verwende und hier die Listen nicht mit geladen wurden.
Mario Priebe 23.02.2012
Hi Mario. Trag das doch als Antwort ein und akzeptier Deine eigene Antwort (falls das geht). Schließlich hast Du das Problem gelöst... Und eine akzeptierte Antwort visualisiert das Problem auch in der Übersicht als "gelöst", ein Kommentar mit der Lösung leider nicht. Wenn Du die Antwort nicht akzeptieren kannst, Kommentar drunter, dann akzeptier ich sie...
ffordermaier 23.02.2012
ja, scheint dass ich die nicht selbst akzeptieren kann...
Mario Priebe 23.02.2012
1
Oh mann, ich kann sie natürlich auch nicht akzeptieren (Hirn einschalten lohnt sich öfter als man denkt...). Ich vote Sie aber mal hoch, dass zumindest Aktivität auf gelösten Fragen stattfindet.
ffordermaier 23.02.2012
Den Vorschlag, eigene Antworten akzeptieren zu können, gibt es doch "erst" seit 2,5 Jahren:
http://codekicker.uservoice.com/forums/21227-general/suggestions/319162-beantwortung-eigener-fragen

Immerhin steht er schon im 5-Jahres-Plan...
Matthias Hlawatsch 17.05.2012
Das Erstaunliche ist, das dafür seit Beginn von CK bereits ein Abzeichen vorgesehen ist :)
Jens Duczmal 17.05.2012
Meinst Du "Autodidakt", oder hab ich was übersehen? Für "Autodidakt" muß man die Antwort nicht akzeptieren. Es müssen nur drei Leute dafür stimmen. Ich sehe gerade: Mario hat hier schon zwei Stimmen. Mal sehen, ob die Abzeichen-Engine gerade einen guten Tag hat und ich Mario zum ersten Autodidakten bei ck machen kann...
Matthias Hlawatsch 17.05.2012
Ja, meine ich. Und ich denke das "Eigene Frage beantwortet" eben nur über das Häckchen geht. Ist aber nur eine Vermutung. Jedenfalls hat er jetzt 4 Stimmen und das Abzeichen nicht. Hat übrigens noch niemand hier :)
Jens Duczmal 17.05.2012
Könnte tatsächlich sein, dass Du Recht hast "beantwortet" in der Beschreibung des Abzeichens "Autodidakt" tatsächlich "akzeptiert" meint. Das wäre dann wirklich der Witz des Tages.
Könnte (leider) aber auch sein, dass die Abzeichen-Vergabe grad mal wieder nicht tut. Zitat (aus dem Gedächtnis) aus dem Feedbackforum (natürlich auch schon älter) "ist leider etwas buggy"...
Matthias Hlawatsch 17.05.2012
1 Antwort
5
Okay, hat sich erledigt, das Problem lag daran, das ich ein FilteredDbSet anstelle des normalen DbSet verwende und hier die Listen nicht mit geladen wurden.
23.02.2012
Mario Priebe 6,0k 3 9

Stelle deine .net-Frage jetzt!
TOP TECHNOLOGIES CONSULTING GmbH