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);
//在这里进行您自己的验证
返回结果;
}
这是一个编译时异常。这是一个编译时异常。