C# 在使用EF代码首先保存验证之前

C# 在使用EF代码首先保存验证之前,c#,entity-framework,C#,Entity Framework,我正在尝试隔离自定义实体验证逻辑 我看到以下情况: 然而,当我尝试这样做时: public partial class ApplicationContext { public void Validate() { var stateEntries = ObjectStateManager.GetObjectStateEntries( EntityState.Added |

我正在尝试隔离自定义实体验证逻辑

我看到以下情况:

然而,当我尝试这样做时:

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); 
    }              
  }
}
我get
无法访问静态上下文中的非静态方法GetObjectStateEntries,其中
ApplicationContext
是:

public class ApplicationContext : DbContext {}

我如何才能使其工作?

正在验证的对象是什么样子的?它是否实现了虚拟实体

编辑:您引用的代码来自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;
}
受保护的重写DbEntityValidationResult ValidateEntity(DbEntityEntry entityEntry,IDictionary项)
{
var result=base.ValidateEntity(entityEntry,items);
//在这里进行您自己的验证
返回结果;
}

正在验证的对象是什么样子的?它是否实现了虚拟实体

编辑:您引用的代码来自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;
}
受保护的重写DbEntityValidationResult ValidateEntity(DbEntityEntry entityEntry,IDictionary项)
{
var result=base.ValidateEntity(entityEntry,items);
//在这里进行您自己的验证
返回结果;
}

这是一个编译时异常。这是一个编译时异常。