基本上我正在尝试扩展已经创建的ASP.NET MVC 4的SimpleMembership。 我想添加一个初始值为0的余额字段。
我尝试使用以下代码并在Balance字段中不插入任何内容:
[Table("UserProfile")]
public class UserProfile
{
[Key]
[DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
public int UserId { get; set; }
public string UserName { get; set; }
public string RealName { get; set; }
public int Balance { get; set; }
}
但不幸的是,当我尝试创建一个新用户(没有余额)时,我得到一个异常,因为它不允许空值,所以我无法在余额中插入null。 如何在Code First中将余额设为0作为默认值。
答案 0 :(得分:0)
在
int Balance
不允许空值,但
int? Balance
确实
如果要在数据库级别控制结构,请使用显式迁移并手动调整生成的迁移代码,以便在数据库级别设置默认值。如果您想在代码级别使用默认值,只需在类的默认构造函数中设置该值。
答案 1 :(得分:0)
首先:你可以使用这样的构造函数:
[Table("UserProfile")]
public class UserProfile
{
[Key]
[DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
public int UserId { get; set; }
public string UserName { get; set; }
public string RealName { get; set; }
public int Balance { get; set; }
public UserProfile()
{
this.Balance = 0;
}
}
其次,清理并重建解决方案,然后使用迁移命令
Update-database -verbose
答案 2 :(得分:0)
默认情况下,整数的默认值为0。实例化新的UserProfile时,Balance应该已经设置为0。