我的模型中有一个可为空的字段。我将其更改为必填且不可为空。新记录设置正确,但是是否有现有记录的字段需要更新?
在上下文文件中,我具有以下内容:
builder.Entity<Player>()
.Property(p => p.Notifications)
.HasDefaultValue(NotificationPreference.Both);
编辑:
因此,如果我在本地主机上手动进行ef迁移,则所有字段都将正确更新。有什么方法可以从天蓝色门户网站执行此操作吗?我的印象是,这将自动完成。但这似乎并不像它。
答案 0 :(得分:1)
如果必须更新值才能使其他代码正常工作,则可以一次性在SQL Server上直接执行。
如果您编写的代码可以自动运行并在每次命中时进行设置,则冒着从现在起几个月后就忘记该代码的风险,并且最终可能会产生您不想要的结果(效率也很低)
处理此 的更好方法是,如果EF设置为null,则??
合并运算符在属性的获取中设置默认值,以使该属性保持读取状态-write,但具有后备字段。这种方法使其他人可以清楚知道默认值是什么。
具有带有后备字段的属性的类的示例:
public class Person
{
private int? age;
public int? Age
{
get
{
return this.age ?? -1; // if (Age == 0) would be true otherwise as default(int) would be used
}
set
{
this.age = value;
}
}
}