LINQ Modeling中的默认值

时间:2009-09-03 09:13:41

标签: asp.net-mvc linq

要将其置于基本形式,我的数据库表不允许varchars的空值,它必须有空格。我的模型不允许空值,因此如果我将表单字段留空,它将不会插入记录。如果出现空表单字段,我希望使用默认值blank。例如,我试过以下没有任何运气:

[Column]
[DisplayName("WMD Company")]
[DefaultValue(" ")]
public string WMDCompany { get; set; }

因此,在我的控制器操作中,我必须执行以下检查:

if(myModel.WMDCompany == null) myModel.WMDCompany = " ";

这对我来说是非常讨厌的。有没有办法让[DefaultValue(" ")]工作?

干杯

3 个答案:

答案 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值?