2012-01-21 18 views
0

エンティティ・クラスも論理を構成する必要があります。エンティティ・フレームワーク・メソッド・マッピングのデフォルトの動作

エンティティフレームワークコードファーストマッパーは、メソッドを持つエンティティに遭遇したときに何をしますか?

プロパティのみを無視してデータベースにマップするだけですか?

サイド質問: エンティティクラスにロジックを組み込むことは良い習慣ですか?

答えて

1

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

BarValidationResultValidationContextモデルの一部ではないだろうとBazプロパティが列にマップされることはありません。

あなたのエンティティクラスには完全に論理があります。

0

これは、プロパティだけを完全に見ているメソッドを完全に無視します。 IMOでは、エンティティクラスで論理を持つべきではありません。エンジニアリングにロジックを取り付ける場合は、エクステンションメソッドで行います

関連する問題