gpt4 book ai didi

c# - 是否可以表达检查约束?

转载 作者:太空狗 更新时间:2023-10-29 17:51:01 25 4
gpt4 key购买 nike

我正在使用 Entity Framework 4.3 进行代码优先开发,但似乎无法表达 CHECK constraint通过属性注释或任何其他方式。我看到 EF 5.0 将添加对 checking enumerations 的支持,但这并不是我想要的。

举一个简化的例子,我想验证所有 Person 对象的名字都是“Bob”或“Harry”,并且是 5、10 或 30 岁。

public class Person
{
[Required]
[Check("Bob", "Harry")] //yes, this attribute is imaginary
public string FirstName { get; set; }

[Required, Check(5, 30, 50)] //check is still imaginary
public int Age { get; set; }
}

我可以在事后运行一个更改脚本来添加这些约束,我可以滚动我自己的检查属性来执行验证,但是我是否缺少一种方法来在 Entity Framework 中实际表达非枚举的 CHECK 约束?

最佳答案

我一直想加入 Check 约束,虽然有几种方法可以做到这一点,例如 M.Babcock 在这里给出的答案,并使用 Initializer 中的 ExecuteSql 手动向数据库添加约束。

但我认为最简单的方法是使用 RegularExpression 注释,因此在您的示例中您会:

public class Person
{
[Required]
[RegularExpression(@"Bob|Harry")]
public string FirstName { get; set; }

[Required, RegularExpression(@"5|30|50")]
public int Age { get; set; }
}

关于c# - 是否可以表达检查约束?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9588606/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com