And*_*eas 8 null boolean default bit entity-framework-4.1
当数据库中的值(位)设置为NULL时,如何设置默认值.现在我收到一个错误,告诉我从数据库加载bool时它不能为NULL.
谢谢.
您的模型必须与数据库匹配 - 如果数据库可能具有NULL值,您应该在模型中使用可空的bool - 但是您可以覆盖模型中该属性的setter以将NULL转换为false值:
public class Foo
{
private bool _bar;
public bool? Bar
{
get { return _bar; }
set
{
if (!value.HasValue)
{
_bar = false;
}
else
_bar = value.Value;
}
}
}
Run Code Online (Sandbox Code Playgroud)
理想情况下,您应该避免这种情况并在数据库列中设置默认值 - 然后您不需要此解决方法.
为数据库更改添加迁移时,请更新迁移类以在更新数据库之前设置默认值:
AddColumn("Jobs", "IsAdvertisingRequired", c => c.Boolean(nullable: false, defaultValueSql: "0"));
Run Code Online (Sandbox Code Playgroud)
这将转换为以下SQL:
ALTER TABLE [Jobs] ADD DEFAULT ((0)) FOR [IsAdvertisingRequired]
GO
Run Code Online (Sandbox Code Playgroud)