EntityFramework.Plus:在模型生成期间检测到一个或多个验证错误

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

我在EF6 Code First项目中使用EntityFramework.Plus的审计功能。当我添加以下代码时:

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'Auditits'基于类型'Audit',没有定义键。\ r \ n“,”exceptionType“:”System.Data.Entity.ModelConfiguration。 ModelValidationException”

审计不是我项目中的实体 - 如错误所述。删除上面的代码时,将删除此错误。

有人可以帮忙吗?是否可以抑制外部库类型的模型验证?

提前致谢

HS

专家解答

免责声明 :我是Entity Framework Plus的所有者

看错误:

EntityType'Audit'没有定义键

您似乎还映射了不应映射的Audit实体。

如果你有一个与此类似的行并删除它,请查看你的EntityContext:

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

回答子问题

我们在库中有Audit类,但为了让它出现在上下文中,它应该被映射(我们不想要)。调试此问题非常困难,因为您是唯一获得此问题的人。

您可以在新项目和当前项目中尝试以下代码吗?在这两种情况下,它应该没有问题。

如果可以,请尝试提供更多信息,让我们重现此问题。

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



许可下: CC-BY-SA with attribution
不隶属于 Stack Overflow
这个KB合法吗? 是的,了解原因
许可下: CC-BY-SA with attribution
不隶属于 Stack Overflow
这个KB合法吗? 是的,了解原因