我在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