Meb*_*rne 7 c# attributes entity entity-framework
实体框架5.0.0似乎在包含在int字段时忽略[Required]属性,并自动包含0值而不是抛出异常.如果字段是字符串,则必需属性似乎有效.下面的简单模型和创建函数不会引发异常.为简洁起见,未显示具有DbSet度的DbContext类.
public class Degree
{
    public int Id { get; set; }
    public string Name { get; set; }
    [Required]
    public int Field { get; set; }
}
private static void CreateDegree()
{
    var degree = new Degree { Name = "Mechanical Engineering" };
    var db = new Context();
    db.Degrees.Add(degree);
    // try statement
}
这可能是我的一个简单的误解,但任何想法/帮助将不胜感激.
Str*_*ior 16
该[Required]属性表示必须存在一个值.当一个Degree被构造,Field被初始化为0,因为这是作为默认值int秒.由于0是值,因此它满足[Required]属性.
您可能希望尝试使用[Range]属性来指定该值必须大于0.或者您可以将模型更改为具有int?,以便null除非将其初始化为某个值.
您的字段的类型int始终具有值.当你创建一个新的实例Degree类的Field属性将被初始化为0.
如果希望列可以为空,请创建属性的类型int?.对于可空类型,如果值为EF,则会抛出错误null.
public class Degree
{
    public int Id { get; set; }
    public string Name { get; set; }
    [Required]
    public int? Field { get; set; }
}
| 归档时间: | 
 | 
| 查看次数: | 2224 次 | 
| 最近记录: |