首页 新闻 会员 周边 捐助

EF code first关于数据表约束的问题

0
悬赏园豆:50 [已解决问题] 解决于 2016-07-14 12:39

如果一个字段 账号,手机,邮箱这些都是唯一的,在类中怎定义呢?

如果一个字段有范围约束,例如: 销售打折(0-1) 星期(1-7)等, 在类中又怎样定义呢?

 

重写ValidationAttribute  IsValid 方法?  这种方法好像只是解决过程的实现, 并没有在真正的源地方进行打进柳钉, 有人教教吗?

风浪的主页 风浪 | 老鸟四级 | 园豆:2996
提问于:2016-03-10 18:05
< >
分享
最佳答案
0

有些约束可以使用Attribute实现,有些特殊的实现不了

账号,手机,邮箱这些都是唯一需要插入数据库前查询是都唯一

其他的大部分特殊验证都可以用正则式验证RegularExpression

特性 示例 说明
Compare [Compare("MyOtherProperty")] 两个属性必须相同值,比如我们要求用户重复输入两次邮件地址时有用
Range [Range(10, 20)]  属性值必须在指定的数值范围内,可以使用数值类型的最大最小值比如int.MinValue、int.MaxValue
RegularExpression [RegularExpression("pattern")]  字符串值必须匹配正则表达式,默认大小写敏感,可以使用(?i)修饰符关闭大小写敏感,比如[RegularExpression("(?i)mypattern")]
Required [Required] 属性值必须非空或者不能只是空格,如果允许全空格可以[Required(AllowEmptyStrings = true)]
StringLength [StringLength(10)]  字符串长度不能超过给定的最大长度,也可以指定最小长度:[StringLength(10, MinimumLength=2)]

收获园豆:50
刘宏玺 | 专家六级 |园豆:14020 | 2016-03-11 11:23

谢谢, 这种code first, 数据库只是做一个存储管理, 一些必须约束都是在代码完成? 这与数据库设计是否有冲突。 例如一个字段只能是0-1的小数, 前一批人开发过, 换一批人接手, 可能不知道这个小细节, 传了1.1的数进来就错了, 如果数据据本身有约束的, 就可以防止这种错误

风浪 | 园豆:2996 (老鸟四级) | 2016-03-11 11:58
其他回答(2)
0

第一个我用脚本实现的

第二个么 可以用枚举

小眼睛老鼠 | 园豆:2731 (老鸟四级) | 2016-03-10 18:25
0

第一个在类中可以使用[Unique]关键字约束

第二个可以加最大最小值的范围,或者是自己自定义类型

CodeHsu | 园豆:5668 (大侠五级) | 2016-03-11 10:08
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册