2017-06-02 4 views
0

Ich habe eine bestehende Datenbank und eine bestehende Domäne, wurde ursprünglich erstellt und zugegriffen mit nHibernate und bin es jetzt zu Entity Framework Core verschieben.Entity Framework Core - Debugging Mapping

Ich habe damit begonnen, nur auf ein Element der Domäne zuzugreifen (die leider eng mit vielen anderen Entitäten gekoppelt ist). Die Domain ist sehr alt und monolithisch und kann NICHT als Teil dieser Übung geändert werden.

Ich bekomme viele Fehler ähnlich wie: "Die Eigenschaft 'DateTimeFormatInfo.AbbreviatedDayNames' konnte nicht zugeordnet werden, da es vom Typ 'String []' ist, der kein primitiver Typ oder ein gültiger Entitätstyp ist. Weisen Sie diese Eigenschaft entweder explizit zu oder ignorieren Sie sie mithilfe des Attributs '[NotMapped]' oder mithilfe von 'EntityTypeBuilder.Ignore' in 'OnModelCreating'. "

.NET Typ Mapping beiseite, es ist sehr schwierig zu versuchen und herauszufinden, wo genau die Zuordnung fehlschlägt. Gibt es ein Tool oder eine Möglichkeit, den fehlerhaften Abschnitt einfach zu identifizieren?

Ich habe folgendes versucht: - SQL-Trace, nichts wie es in der App fehlschlägt. - Ausnahme gibt nur diesen Fehler, keine innere Ausnahme oder weitere Informationen. - Hat eine Textsuche in der gesamten Lösung für Entitäten mit Elementen vom Typ 'DateTimeFormatInfo' durchgeführt. Da sind keine. - Hat eine Textsuche in der gesamten Lösung für Entitäten, die die Eigenschaft/function abgekürztDayNames enthalten oder verwenden, auch nichts.

Ich bin daher stecken bleiben versuchen, genau zu finden, welche Entity Mapping ist fehlgeschlagen.

Zusätzlich möchte ich die EF Fluent API für jedes Mapping verwenden.

Antwort

1

Sie haben nach dem falschen Text gesucht.
DateTimeFormatInfo.AbbreviatedDayNames ist keine Eigenschaft. Sie sollten stattdessen versuchen, alle Eigenschaften mit dem Typ 'String []' zu finden, suchen Sie also in Entitäten nach diesem.
Und der Fehler selbst sagt, wo das Problem liegt. EF kann Array eines Strings keinem DB-Typ zuordnen.

+0

Ok so zwei Fragen, wenn es nichts mit DateTimeFormatInfo.AbbreviatedDayNames zu tun hat, warum es in der Fehlermeldung erwähnt. Diese Eigenschaft ist eine Zeichenfolge [], aber warum geben Sie den Namen? Zweitens gibt es ein Tool, das die Probleme bei der Kartierung und Kartierung klar darstellt. – user281921

+0

Ich bin nicht sicher, warum genau Sie diese Informationen mit DayNames erhalten. Ich habe die getestete Entity mit 'String [] SomeArray' abgeglichen und den Fehler bekommen: "Die Eigenschaft 'Party.SomeArray' konnte nicht zugeordnet werden, da sie vom Typ 'String []' ist und kein primitiver Typ oder a ist Gültiger Entitätstyp. Entweder diese Eigenschaft explizit zuordnen oder sie ignorieren. " Also in meinem Fall 'SomeArray' ist der Name der Eigenschaft selbst. Es gibt wahrscheinlich etwas Spezifisches über die Situation, die Sie haben. – borisdj

+0

Das ist, was ich versuche herauszufinden, wo genau die Eigenschaft "AbcreviatedDayNames" sitzt, auf welcher meiner Entitäten.Wie gesagt, ich habe viel und eine Textsuche findet diese Eigenschaft nicht. Ich merke, dass der Fehler in Mapping string [] ist, aber ich habe Probleme, es zu finden, daher die Anfrage für ein Tool oder einfacher Weg. – user281921

0

Ich erlebte die exakt gleichen Fehler wie oben, eine Anwendung zu Entity Framework Kern

The property 'DateTimeFormatInfo.AbbreviatedDayNames' could not be mapped, because it is of type 'String[]' which is not a supported primitive type or a valid entity type. Either explicitly map this property, or ignore it using the '[NotMapped]' attribute or by using 'EntityTypeBuilder.Ignore' in 'OnModelCreating'."

In meinem Fall auch nur jetzt Migration das Problem auf eine Einheit mit einem CultureInfo Eigenschaft Typ verwandt war.

System.Globalization.CultureInfo.DateTimeFormat ist ein DateTimeFormatInfo Typ und ist die Eigenschaft, die der Fehler in meinem Fall beschrieb.

Verwandte Themen