2016-08-19 3 views
0

Я пытаюсь изолировать логику проверки пользовательской сущности.Предварительная проверка с помощью EF Code-FIrst

я вижу следующее: 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

Что должен быть проверен объект? Внедряет ли она идентификацию?

EDIT: Код, на который вы ссылаетесь, относится к 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

Смежные вопросы