Wir sind dabei, unsere relativ große Anwendung von Entity Framework 6.2 auf Entity Framework Core 2.0 zu migrieren, und obwohl vieles einfacher war, als ich es mir erhofft hatte, Ich bin auf ein Problem gestoßen, von dem ich bezweifle, dass ich der erste (oder der tausendste) bin, aber ich kann keine kompakte Lösung dafür finden: Namenskonventionen.Erneutes Erstellen von Namenskonventionen für EF6 in EF Core
Konkret Namenskonventionen für relationale Eigenschaften.
Ein typisches One-to-many Paar Unternehmen in unserer Anwendung etwas wie folgt aussehen:
public class Foo
{
[Key, DatabaseGenerated(DatabaseGeneratedOption.None)]
public int FooId { get; set; }
[Required]
public string Bar { get; set; }
[InverseProperty(nameof(Baz.Foo))]
public ICollection<Baz> Bazzes { get; set; }
}
public class Baz
{
[Key, DatabaseGenerated(DatabaseGeneratedOption.None)]
public int BazId { get; set; }
[Required]
public string Qux { get; set; }
[Required]
public Foo Foo { get; set; }
}
In unserer bestehenden Datenbank abgebildet EF6, dass in den folgenden Tabellen:
Foos Bazzes -- named after the DbSets on the DbContext
**** ******
FooId : int BazId : int
Bar : nvarchar(max) Qux : nvarchar(max)
Foo_FooId : int
Mit der Standardnamenskonventionen in EF Core scheint es, dass der portierte Kontext nach einer Spalte FooId
statt Foo_FooId
sucht.
Ich habe versucht, dies mit etwas zu ändern, was beschrieben wird here, aber ich kann nicht herausfinden, welche Bedingung auf die Eigenschaft Metadaten auferlegt werden, nur die Navigationseigenschaften zu ändern. (Ich habe auch ein paar komplexe Art, die ich mit .Entity<Owner>().OwnsOne(o => o.Owned)
konfiguriere, also muss die Lösung auch das erfassen.)
Gibt es keine fertige Lösung, um diesen Übergang zu erleichtern?
Ich habe eine MVCE für dieses Problem hier veröffentlicht: https://github.com/tlycken/MCVE_EfCoreNavigationalProperties
Soweit ich weiß, nein. Bei der Migration (zu EF Core 1.0) haben wir die Datenbank gerüstet und den Code entsprechend angepasst. Ich kann keine Beiträge finden, die andeuten, dass sich dies in irgendeiner Weise verbessert hat. – Tubs