Ich sehe eine Menge von Beispielen zur Verwendung von EF Code zuerst mit POCOs verwenden, die so etwas wie dies zeigen:Soll ich Fremdschlüssel synchron mit Referenzen, wenn POCOs
public class Post
{
public int PostId { get; set; }
public string Title { get; set; }
public string Content { get; set; }
public int BlogId { get; set; }
public virtual Blog Blog { get; set; }
}
Nun sehen Sie die Blog
Eigenschaft. Sollte es nicht wie diese stattdessen sein:
private Blog blog;
public virtual Blog Blog
{
get
{
return blog;
}
set
{
blog = value;
if (blog != null)
{
BlogId = blog.BlogId;
}
}
}
Ich meine, da Sie bereits mit dem Fremdschlüssel „verschmutzen“ Ihr Modell sind, sollen Sie nicht zumindest halten sie synchron mit der Referenz? Oder Sie sollten sich beim Lesen von Daten sowieso nicht auf BlogId
verlassen (z. B. wenn Sie wissen möchten, ob eine bestimmte BlogId
auf einer Liste ist). Oder vielleicht gibt es eine magische Eigenschaft auf DbContext
(wie KeepForeingKeysPropertiesSyncronizedWithReferences
), die das für mich tut, und ich bin der einzige traurige Programmierer, die worried darüber sind? Oder bin ich paranoid? (auch, sorry für mein schlechtes Englisch)
EDIT Entschuldigung dafür - das war wirklich eine dumme Frage. Stefan hat recht, EF macht das wirklich für dich. Ich habe das nicht gesehen, weil die Referenzen, die ich passierte, mit AsNoTracking()
geladen wurden. Nur in dieser Bedingung haben Sie einen Verweis mit ID und das Feld für den foreing-Schlüssel ist 0. Solange Sie einen Verweis übergeben, der bereits im Kontext ist, sollte es funktionieren.
nicht über EF wissen Sie, aber Sie hatten NHibernate verwendet würden Sie nicht in der blogid Eigenschaft setzen. – erikkallen
Ich denke, dass die Möglichkeit, die BlogId zu verwenden, nett ist, also brauche ich keine Blog-Referenz und kann trotzdem die Assoziation speichern. Ich bin nur verwirrt darüber, es synchron zu halten - für mich sieht es so aus als wäre es offensichtlich, aber ich habe noch nie jemanden dabei gesehen, vielleicht irre ich mich also: / – user1526627