2016-08-19 45 views
0

我試圖隔離我的自定義實體驗證邏輯。BeforeSave驗證與EF代碼-Frst

我看到以下內容:https://blogs.msdn.microsoft.com/alexj/2009/07/20/tip-27-how-to-implement-beforesave-validation/

然而,當我嘗試這樣的:

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

我得到Cannot access non-static method GetObjectStateEntries in a static context,其中ApplicationContext是:

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