Ich muss Admin das ist irgendwie lustig, obwohl ich denke, ich verstehe, warum :) Ich habe eine UnitTest erstellt, um einen Blog-Eintrag zu versuchen, Alex Vorschlag über meine Vererbungsprobleme zu versuchen. Jetzt stoße ich auf einen anderen.EF4 - Hinzufügen eines Blogeintrags beschwert sich über Profil?
[TestMethod]
public void UserCanAddBlogEntry()
{
var context = new EntityContext(Options.LazyLoading);
var user = (from u in context.Users
.Include("Blog.BlogEntries")
where u.Id == 1
select u).FirstOrDefault();
BlogEntry entry = new BlogEntry();
entry.Header = "Test Entry";
entry.Text = "Test Text blah blah blah";
entry.CreatedAt = DateTime.Now;
entry.Blog = user.Blog;
user.Blog.BlogEntries.Add(entry);
context.SaveChanges();
Assert.IsTrue(user.Blog.BlogEntries.Count > 0);
}
verursacht die Ausnahme:
fehlgeschlagen UserCanAddBlogEntry Zirzle.UnitTests
Prüfnorm UserCanAddBlogEntry warf Ausnahme: System.InvalidOperationException: Ungültige Fixup Beziehung in die Navigationseigenschaft 'User' erfasst von die Entität des Typs 'Profil'.
Nicht sicher, was mit diesem Bild nicht stimmt. Wenn ich .Include ("Profile") in die Get-Abfrage einfüge, dann speichere Änderungen nicht mehr. Ich habe versucht, ein 0.1 Verhältnis Ende für Profil hinzuzufügen, aber das hat auch nicht geklappt. Irgendwelche Vorschläge? Ich nehme an Stack-Überläufe persönliche EF-Experte könnte eine Erklärung haben :)
Alle Ihre Annahmen waren richtig. Ich habe jedoch immer noch Probleme mit der Reparatur mit Ihrem Vorschlag: Test Methode UserCanAddBlogEntry warf Ausnahme: System.InvalidOperationException: Ungültige Beziehung Reparatur erkannt in der Navigationseigenschaft 'BlogEntries' der Entität des Typs 'Blog'. – mhenrixon
Hmm ... Ich bin gerade ein wenig verwirrt. Anstelle von entry.Blog = Blog lassen Sie mich wissen, was passiert, wenn Sie versuchen blog.BlogEntries.Add (Eintrag) statt. –
Ich tat, wie Sie vorgeschlagen, außer für eine Sache. Ich habe eine a-Methode AddEntry (Entry-Eintrag) erstellt, die nur einen Eintrag zu der IList wie in den Poco-Posts ado.net Blog empfohlen hinzugefügt hat. Sollte in Zukunft in der Benutzerklasse sein. Es gibt zwei Probleme. Wenn Sie das tun, was Sie vorgeschlagen haben, wird das Problem behoben. Wenn Sie das tun, was Sie in dem Kommentar vorgeschlagen haben, gibt es eine Nullreferenz-Ausnahme. Ich denke, es ist der Proxy, der eine Art Problem verursacht, aber im Ernst, ich weiß nicht einmal, ob es ein Fehler ist. Ich meine, ich sagte, ich kann auf mich selbst aufpassen. Ich werde den Kontext auf diese Weise sowieso nicht aufdecken. –
mhenrixon