EntityFramework.Plus: во время генерации модели были обнаружены одна или несколько ошибок проверки


Вопрос

Я использую функцию аудита EntityFramework.Plus в проекте EF6 Code First. Когда я добавлю следующий код:

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}");
            };
        }

Я получаю следующую ошибку:

Во время генерации модели были обнаружены одна или несколько ошибок проверки: \ r \ n \ r \ nWebsite.Core.Entities.Audit:: EntityType 'Audit' не определил ключ. Определите ключ для этого EntityType. \ R \ nAudits: EntityType: EntitySet «Аудит» основан на типе «Аудит», который не имеет определенных ключей. \ R \ n "," exceptionType ":" System.Data.Entity.ModelConfiguration. ModelValidationException»

Аудит не является субъектом в моем проекте - как указано в ошибке. Эта ошибка удаляется, когда я удаляю код выше.

Может ли кто-нибудь помочь? Можно ли подавить проверку модели для внешних типов библиотек?

заранее спасибо

HS

Ответ эксперта

Отказ от ответственности : я являюсь владельцем Entity Framework Plus

Глядя на ошибку:

EntityType «Аудит» не имеет определенного ключа

Кажется, вы также сопоставили объект аудита, который не должен отображаться.

Посмотрите на свой EntityContext, если у вас есть строка, подобная этой, и удалите ее:

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

Ответные вопросы

У нас есть класс аудита в нашей библиотеке, но чтобы он отображался в контексте, он должен отображаться (чего мы не хотим). Это довольно сложно отладить эту проблему, так как вы единственный, кто ее получил.

Можете ли вы попробовать следующий код в новом проекте и в текущем? В обоих случаях он должен работать без проблем.

Если можно, попробуйте предоставить дополнительную информацию, чтобы мы могли воспроизвести эту проблему.

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




Лицензировано согласно: CC-BY-SA
Не связан с Stack Overflow
Является ли этот КБ законным? Да, узнайте, почему