Ich habe alle Google- und SO-Seiten über Personen gelesen, die eine Eins-zu-Eins-Beziehung in EF
aufbauen, aber es funktioniert einfach nicht für mich.Wie stelle ich eine Eins-zu-Eins-Beziehung mit Entity Framework Code First her?
Hier ist mein Modell:
Konto:
public int Id {get; set;}
public virtual AccountConfig AccountConfig {get; set;}
Konto Karte:
HasKey(t => t.Id);
HasRequired(t => t.AccountConfig)
.WithOptional();
Konto Config:
public int Id {get; set;}
public int AccountId {get; set;}
public virtual Account Account {get; set;}
Konto Config Karte:
HasKey(t => t.Id);
HasRequired(t => t.Account)
.WithOptional(t => t.AccountConfig);
Wenn er ausgeführt wird, die AccountConfig
Eigenschaft auf Account
ist NULL
und die Account
Eigenschaft auf AccountConfig
ist eine falsche Aufzeichnung (zufällig, die abgerufenen Account.Id
ist das gleiche wie die AccountConfig.Id
, aber ich weiß nicht, ob das etwas bedeutet,).
In der Datenbank, die Account
Tabelle nicht einen Verweis auf die AccountConfig
Datensatz aber die AccountConfig
Tabelle hat einen Verweis auf die Account
Aufzeichnung der AccountId
Spalte.
Das Endergebnis wäre für mich einen Hinweis auf die AccountConfig
von Account
zu haben, und (wenn möglich), einen Verweis auf Account
von AccountConfig
.
So konnte ich nur die AccountConfig-Tabelle von Account verweisen, wenn die Account-Tabelle eine Spalte namens AccountConfigId hat? – jermny
Nicht genau. Ihre Entität "AccountConfig" sollte nur eine "Id" -Spalte haben; Entfernen Sie die Spalte "AccountId" und stellen Sie sicher, dass "Id" nicht automatisch generiert wird. Beim Hinzufügen von 'AccountConfig' -Entitäten sollten ihre' Id's explizit so gesetzt werden, dass sie mit der 'Id' des' Account'-Tabellendatensatzes übereinstimmen. – Olly
Sehen Sie den Artikel, den ich verlinkt habe, für ein Beispiel, das Ihrem ähnlich ist. – Olly