2016-08-19 4 views
0

私はカスタムエンティティ検証ロジックを分離しようとしています。 https://blogs.msdn.microsoft.com/alexj/2009/07/20/tip-27-how-to-implement-beforesave-validation/EFコードFIstを使用したBeforeSave検証

しかし、私はこれをしようとすると::

は、私は以下を参照してください

ApplicationContextがある私は Cannot access non-static method GetObjectStateEntries in a static context取得
public partial class ApplicationContext { 
    public void Validate() 
    { 
    var stateEntries = ObjectStateManager.GetObjectStateEntries( 
           EntityState.Added | 
           EntityState.Modified | 
           EntityState.Deleted) 
         .Where(e => e.Entity is IValidingEntity); 

    foreach (var stateEntry in stateEntries) 
    { 
     var entity = stateEntry.Entity as IValidingEntity; 
     entity.Validate(stateEntry.State); 
    }    
    } 
} 

、:

public class ApplicationContext : DbContext {} 
私はこの作業を取得するにはどうすればよい

答えて

2

検証対象のオブジェクトはどのように見えますか? IValidatingEntityを実装していますか?

編集:あなたが参照しているコードは2009年のものであり、バグが間違っています。保存前に検証をオーバーライドするには、DbContextでこれを使用してください。

protected override DbEntityValidationResult ValidateEntity(DbEntityEntry entityEntry, IDictionary<object, object> items) 
{ 
    var result = base.ValidateEntity(entityEntry, items); 
    // do your own validation here 
    return result; 
} 
+0

これはコンパイル時の例外として発生します。 – RobVious

+0

@RobVious - 更新しました – timkly

+0

ありがとう:)))) – RobVious

関連する問題