Nicht in der Lage, um zu bestimmen, die Beziehung vertreten durch die navigation Eigenschaft ASP.NET core 2.0 Entity Framework
Ich bin derzeit an der Entwicklung einer ASP.NET app, die verwendet Entity Framework, für den angegebenen code
public partial class EnumMeta : Meta
{
public EnumMeta()
{
this.Messages = new HashSet<MessageMeta>();
}
public bool IsFlag { get; set; }
public virtual ICollection<MessageMeta> Messages { get; set; }
}
public partial class MessageMeta : Meta
{
public MessageMeta()
{
this.Enums = new HashSet<EnumMeta>();
this.Receiver = new HashSet<Module>();
this.Sender = new HashSet<Module>();
}
public int MsgId { get; set; }
public virtual ICollection<EnumMeta> Enums { get; set; }
public virtual ICollection<Module> Receiver { get; set; }
public virtual ICollection<Module> Sender { get; set; }
}
Ich erhalte eine Fehlermeldung:
Nicht in der Lage, um zu bestimmen, die Beziehung vertreten durch die navigation Eigenschaft 'EnumMeta.Mitteilungen' des Typs 'ICollection'. Entweder manuell konfigurieren Sie die Beziehung, oder Sie ignorieren diese Eigenschaft mit der '[NotMapped]' Attribut oder durch Verwendung von " EntityTypeBuilder.Ignorieren' in 'OnModelCreating'.
Dieser code automatisch generiert wurde, die von Entity Framework mit einem WPF-Projekt und dann die Modelle wurden ergriffen, um eine ASP.NET core-2.0-Projekt zu tun, ein "code-first" - Ansatz auf die Datenbank.
Ich habe bereits versucht die Einrichtung [ForeignKey("MessageMeta")]
oben public virtual ICollection<MessageMeta> Messages { get; set; }
ohne positive Lösung.
- Ich Wette, Sie sind mit Entity Framework-Kern für dieses Projekt? Gibt es Unterschiede zwischen Entity Framework und Entity Framework-Kern. Und es sieht aus wie
MessageMeta
undEnumMeta
sind viele-zu-viele.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Als das, was ich sagte vorhin, dass es viele Unterschiede zwischen
Entity Framework
undEntity Framework Core 2.0
ich glaube nicht, können Sie nehmen Sie einfach die generierten Modelle vonEntity Framework
und Code ausführen, Zuerst mitEntity Framework Core 2.0
.Aus den Modellen beschrieben, es sieht aus wie
MessageMeta
undEnumMeta
hat viele-zu-viele-Beziehung.Als heute
Entity Framework Core 2.0
noch nicht unterstützt viele-zu-viele ohne der Zwischenklasse. Also, um zu tun, viele-zu-viele-inEF Core 2.0
müssen Sie die Zwischenklasse.MessageMeta
EnumMeta
MessageEnum (oder Sie können es nennen, EnumMessage) - intermediate-Modell
DbContext
appsettings.json
Start
Befehle ausgeführt werden, auf
Package Manager Console
Generierten Datenbank
cannot implicitly convert type 'ICollection<X.Models.EnumMeta>' to 'IEnumerable<Models.MessageEnum>' an explicit conversion exists
auf beiden ForeignKeys ` modelBuilder.Entity<MessageEnum>() .HasOne(x => x.MessageMeta) .WithMany(m => m.Enums) .HasForeignKey(x => x.MessageMetaId); `Meta
Klasse habe ich nicht wissen.