EntityFramework.Plus:モデル生成中に1つ以上の検証エラーが検出されました

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

質問

私はEntityFramework.Plusの監査機能をEF6コードファーストプロジェクトで使用しています。次のコードを追加すると:

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

次のエラーが表示されます。

モデル生成中に1つ以上の検証エラーが検出されました:\ r \ n \ r \ nWebsite.Core.Entities.Audit :: EntityType 'Audit'にキーが定義されていません。このEntityTypeのキーを定義します。\ r \ n監査:EntityType:EntitySet 'Audits'は、キーが定義されていないタイプの「監査」に基づいています。\ r \ n "、" exceptionType ":" System.Data.Entity.ModelConfiguration。 ModelValidationException "

エラーは、私のプロジェクトのエンティティではありません。このエラーは、上記のコードを削除すると削除されます。

誰も助けることができますか?外部ライブラリタイプのモデル検証を抑制することは可能ですか?

前もって感謝します

HS

エキスパート回答

免責事項 :私はEntity Framework Plusの所有者です

エラーを見て:

EntityType '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は合法ですか? はい、理由を学ぶ