0

我有一个数据库优先设计。我想为我的模型设置默认值,以便用户可以将编辑器文本框留空以用于我的可空字段之一。EF 似乎不想只将 null 放入数据库,所以我希望我可以为我的可为空属性将默认值设置为 null。

即,如果提交时文本框留空,我想在我的数据库中插入 null 以获取属性。

我读过你可以将一个构造函数添加到一个部分类来做我想做的事。所以你基本上会有:

public partial class MyClass{
    public MyClass()
    {
        field1 = null; //this would be the default value for field1
    }
}

唯一的问题是我正在处理的模型的自动生成的部分类已经有一个构造函数,所以我不能将构造函数添加到不同的(永久)部分类。我不想更新自动生成的部分类,因为当我从数据库更新我的 edmx 时它只会被覆盖。

4

1 回答 1

0

字符串的默认值应该已经为空,所以我认为你走错了路。

问题是文本框将始终与表单帖子一起传递,即使它是空白的,这将导致控制器中出现空字符串而不是空值,即使您找到一种方法将字符串显式设置为 null你的第一堂课。

相反,在表单回发后检查控制器中字符串的值,如果它为空,则将其设置为 null。

if (String.IsNullOrEmpty(formModel.MyString)) formModel.MyString = null;

要么,要么创建一个默认的模型绑定器以在模型绑定期间检查字段的值,如果它为空则不设置它。

于 2012-08-28T23:20:54.300 回答