我在EF6 Code First项目中使用EntityFramework.Plus的审计功能。当我添加以下代码: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}");
};
}
我得到以下错误:
One or more validation errors were detected during model generation:\r\n\r\nWebsite.Core.Entities.Audit: : EntityType 'Audit' has no key defined. Define the key for this EntityType.\r\nAudits: EntityType: EntitySet 'Audits' is based on type 'Audit' that has no keys defined.\r\n", "exceptionType": "System.Data.Entity.ModelConfiguration.ModelValidationException"
审计是不是在我的项目的实体 - 由错误陈述。删除上面的代码时会删除此错误。
谁能帮助?是否可以抑制外部库类型的模型验证?
在此先感谢
HS
嘿,Johnathan,感谢您的快速回复。你不会相信这个,但项目中没有其他DbSet!事实上,审计甚至不存在。那是我的旧审计实体,您的代码现在已被替换。可以在任何地方缓存 - 实体框架元数据缓存可能吗?此外,这只发生在我介绍上述代码时。如果我删除了新的审计代码,则会出现此错误。 –
KnowHoper
你好@HeySatan,你成功了吗? –
嘿乔纳森,我很遗憾我的迟到回应。我设法让它工作,我通过重新构建整个WebApi项目并复制代码和配置来实现这一目标。肯定有一些奇怪的缓存问题是缓存旧模型。感谢您的帮助和勤奋。 – KnowHoper