要将其置于基本形式,我的数据库表不允许varchars的空值,它必须有空格。我的模型不允许空值,因此如果我将表单字段留空,它将不会插入记录。如果出现空表单字段,我希望使用默认值blank。例如,我试过以下没有任何运气:
[Column]
[DisplayName("WMD Company")]
[DefaultValue(" ")]
public string WMDCompany { get; set; }
因此,在我的控制器操作中,我必须执行以下检查:
if(myModel.WMDCompany == null) myModel.WMDCompany = " ";
这对我来说是非常讨厌的。有没有办法让[DefaultValue(" ")]
工作?
干杯
答案 0 :(得分:1)
这样的事情:
private string wmdCompany;
public string WMDCompany
{
get
{
if (this.wmdCompany == null)
{
return string.Empty;
}
return this.wmdCompany;
}
set
{
this.wmdCompany = value;
}
}
答案 1 :(得分:1)
未使用DefaultValue属性。不幸的是,LINQ to SQL不支持数据库默认值。如果我记得,该属性旨在用于API扩展,但我不知道有任何使用它。
可以使用两种解决方法。
首先通过适当控制属性并将其设置为null来更新数据层。使用partial类来扩展数据类,并实现OnCreated()partial方法,并在此设置值为String.Empty。
partial void OnCreated()
{
MyProp = String.Empty;
}
其次,您可以更改DBML表示以允许空值,但在数据库中,使用触发器将NULL转换为空字符串。
我自己采用第一种方法 - 假设您不能像Adrian所建议的那样使用NULL
答案 2 :(得分:0)
插入空格作为NULL的占位符对我来说似乎是一个非常模糊的方法。为什么不直接更改表设计以允许NULL值?