エンティティ・クラスも論理を構成する必要があります。エンティティ・フレームワーク・メソッド・マッピングのデフォルトの動作
エンティティフレームワークコードファーストマッパーは、メソッドを持つエンティティに遭遇したときに何をしますか?
プロパティのみを無視してデータベースにマップするだけですか?
サイド質問: エンティティクラスにロジックを組み込むことは良い習慣ですか?
エンティティ・クラスも論理を構成する必要があります。エンティティ・フレームワーク・メソッド・マッピングのデフォルトの動作
エンティティフレームワークコードファーストマッパーは、メソッドを持つエンティティに遭遇したときに何をしますか?
プロパティのみを無視してデータベースにマップするだけですか?
サイド質問: エンティティクラスにロジックを組み込むことは良い習慣ですか?
EFがモデル検出を実行するとき、エンティティのメソッドは無視されます。追加のプロパティーを追加してマップされていないものとしてマークすることもできます。ここ
public class Foo
{
public int Id { get; set; }
public Bar Bar { get; set; }
public string Baz { get; set; }
public ValidationResult Validate(ValidationContext context)
{
}
}
public class MyContext : DbContext
{
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<Foo>().Ignore(f => f.Baz);
modelBuilder.Ignore<Bar>();
}
}
Bar
、ValidationResult
、ValidationContext
モデルの一部ではないだろうとBaz
プロパティが列にマップされることはありません。
あなたのエンティティクラスには完全に論理があります。
これは、プロパティだけを完全に見ているメソッドを完全に無視します。 IMOでは、エンティティクラスで論理を持つべきではありません。エンジニアリングにロジックを取り付ける場合は、エクステンションメソッドで行います