是否可以使用数据注释为int属性添加默认值
类似
[DefaultValue=1]
public int MyId {get; set;}
答案 0 :(得分:51)
试试这个 - 在构造函数中设置默认值:
public class YOURMODEL
{
public int MyId { get; set; }
public YOURMODEL()
{
MyId = 1;
}
}
其他用户后来添加:自C#6.0(2015)以来,这个更简单的语法被允许:
public class YOURMODEL
{
public int MyId { get; set; } = 1;
}
答案 1 :(得分:6)
使用[DefaultValue(false)]
。
答案 2 :(得分:3)
构造函数方法当然是正确的(根据@Nilesh),但此解决方案不会解决您可能已在数据库中创建的任何遗留数据。
您还可以通过生成迁移然后再调整AddColumn方法来更新旧数据......
AddColumn("dbo.Orgs", "MyId", c => c.Int(nullable: false));
更改为:
AddColumn("dbo.Orgs", "MyId", c => c.Int(nullable: false, defaultValue: 1));
注意,这也将创建一个数据库触发器,它将自动更新INSERT上的默认值,因此从技术上讲,您不需要从数据库角度看构造函数方法,但使用构造函数设置值仍然是最佳实践。
答案 3 :(得分:0)
您只能使用类'构造函数执行此操作。因此,您的代码应如下所示:
public class MyModel
{
public MyModel()
{
MyId = 1;
}
public int MyId {get; set;}
}
每当创建一个新的类实例时,这将导致MyId
属性设置为1
。但是,如果模型绑定检测到用户已为MyId
指定了值,则它将使用用户指定的值覆盖默认值。
答案 4 :(得分:-1)
using System.ComponentModel;
namespace EMS.Models
{
public class Admission
{
[DefaultValue(false)]
public Boolean LCStatus { get; set; }
[DefaultValue("India")]
public string Country{ get; set; }
}
}