Ich entwickle Sprachwörterbuch mit asp-Kern 2.0. Ich frage mich, wie zu meine Datenbank richtig zu entwerfen. Ich bin auf ähnliche Fragen gestoßen: How to design a database for translation dictionary?.Zwei Fremdschlüssel zu einer Entity Framework Core-Tabelle
ich beschlossen, eine Datenbank wie im folgenden Bild zu erstellen:
database structure that i wanna realize in ef core
Aber ich weiß nicht, wie diese Struktur mit Entity Framework Core 2.0 zu realisieren.
Wort Einheit
public class Word
{
public Word()
{
Translations = new HashSet<Translation>();
}
[Key]
public Guid WordId { get; set; }
[Required]
public Guid LangCodeId { get; set; }
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage",
"CA2227:CollectionPropertiesShouldBeReadOnly")]
public virtual ICollection<Translation> Translations { get; set; }
}
Übersetzungseinheit
public class Translation
{
[Key]
public Guid TranslationId { get; set; }
public Guid WordId1 { get; set; }
public Guid WordId2 { get; set; }
//[ForeignKey("WordId1,WordId2")]
public Word Words { get; set; }
}
fließend API
modelBuilder.Entity<Translation>()
.HasOne(w => w.Words)
.WithMany(m => m.Translations)
.HasForeignKey(fk => new { fk.WordId1, fk.WordId2 });
wenn ich versuche, eine Migration zu addieren, erhalte ich die Fehlermeldung:
The relationship from 'Translation.Words' to 'Word.Translations' with
foreign key properties {'WordId1' : Guid, 'WordId2' : Guid} cannot target
the primary key {'WordId' : Guid} because it is not compatible. Configure
a principal key or a set of compatible foreign key properties for this
relationship.