如何限制Entity Framework允许的值?

时间:2011-05-01 21:24:38

标签: .net entity-framework

我正在使用实体框架。

我的实体有一个类型为string的 DayOfWeek 属性。

如何将其值限制为仅限“星期日”,“星期一”,“星期二”等?

1 个答案:

答案 0 :(得分:2)

没有简单的方法。如果是ObjectContext API,您可以在SaveChanges实现中覆盖ObjectContext

public override int SaveChanges(SaveOptions options)
{
    var entities = ObjectStateManager.GetObjectStateEntries(EntityState.Added | EntityState.Modified)
                                     .Select(e => e.Entity)
                                     .OfType<YourEntityType>();

    foreach (var entity in entities)
    {
        // Here you can validate your property - entity is of your type
    }

    return base.SaveChanges(options);
}

问题是EF不支持自定义标量类型,并且在使用int替换值时也不支持枚举。

另一种方法是通过业务逻辑中的自定义验证来强制执行此操作。