EntityFramework.Plus: Ein oder mehrere Validierungsfehler wurden während der Modellerstellung festgestellt

c# entity-framework entity-framework-6 entity-framework-plus

Frage

Ich verwende die Audit-Funktion von EntityFramework.Plus in einem EF6 Code First-Projekt. Wenn ich den folgenden Code hinzufüge:

public virtual DbSet<AuditEntry> AuditEntries { get; set; }

public virtual DbSet<AuditEntryProperty> AuditEntryProperties { get; set; }

static EntityContext()
   {
            AuditManager.DefaultConfiguration.AutoSavePreAction = (context, audit) =>
            {
                var Entities = context as EntityContext;
                if (Entities != null)
                {
                    Entities.AuditEntries.AddRange(audit.Entries);
                }
                else throw new InvalidOperationException($"Context is null for {context.Database.Connection}");
            };
        }

Ich erhalte den folgenden Fehler:

Ein oder mehrere Validierungsfehler wurden während der Modellerstellung festgestellt: \ r \ n \ r \ nWebsite.Core.Entities.Audit:: EntityType 'Audit' hat keinen Schlüssel definiert. Definieren Sie den Schlüssel für diesen EntityType. \ R \ nAudits: EntityType: EntitySet 'Audits' basiert auf dem Typ 'Audit', für den keine Schlüssel definiert sind. \ R \ n "," AusnahmeTyp ":" System.Data.Entity.ModelConfiguration. ModelValidationException "

Audit ist keine Entität in meinem Projekt - wie vom Fehler angegeben. Dieser Fehler wird entfernt, wenn ich den obigen Code entferne.

Kann jemand helfen? Ist es möglich, die Modellvalidierung für externe Bibliothekstypen zu unterdrücken?

Danke im Voraus

HS

Expertenantwort

Haftungsausschluss : Ich bin der Eigentümer von Entity Framework Plus

Blick auf den Fehler:

EntityType 'Audit' hat keinen Schlüssel definiert

Offenbar haben Sie auch die Audit-Entität zugeordnet, die nicht zugeordnet werden sollte.

Schau dir deinen EntityContext an, wenn du eine ähnliche Zeile hast und entferne sie:

public virtual DbSet<Audit> Audits { get; set; }

Beantworten Sie die Unterfragen

Wir haben die Audit-Klasse in unserer Bibliothek, aber um sie im Kontext erscheinen zu lassen, sollte sie gemappt werden (was wir nicht wollen). Es ist ziemlich schwierig, dieses Problem zu debuggen, da Sie der Einzige sind, der es bekommt.

Können Sie den folgenden Code in einem neuen Projekt und dem aktuellen ausprobieren? In beiden Fällen sollte es ohne Probleme funktionieren.

Wenn Sie können, versuchen Sie, weitere Informationen bereitzustellen, damit wir dieses Problem reproduzieren können.

public virtual DbSet<Audit> Audits { get; set; }



Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum
Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum