C# mvc3数据库第一模型默认值

C# mvc3数据库第一模型默认值,c#,asp.net-mvc-3,entity-framework,C#,Asp.net Mvc 3,Entity Framework,我有一个数据库第一设计。我想为我的模型设置默认值,这样用户就可以为我的一个可空字段保留编辑器文本框。EF似乎不想只是将null抛出到数据库中,所以我希望可以将可为null的属性的默认值设置为null Ie如果提交时文本框为空,我想在数据库中为属性插入null 我已经读过,你可以在一个分部类中添加一个构造函数来做我想做的事情。所以你基本上有: public partial class MyClass{ public MyClass() { field1 = null

我有一个数据库第一设计。我想为我的模型设置默认值,这样用户就可以为我的一个可空字段保留编辑器文本框。EF似乎不想只是将null抛出到数据库中,所以我希望可以将可为null的属性的默认值设置为null

Ie如果提交时文本框为空,我想在数据库中为属性插入null

我已经读过,你可以在一个分部类中添加一个构造函数来做我想做的事情。所以你基本上有:

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

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

字符串的默认值应该已经为null,因此我认为您走错了路径

问题是,文本框始终会与表单post一起传递,即使它是空的,这将导致控制器中出现空字符串,而不是空值,即使您找到了在初始类中将字符串显式设置为空的方法

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

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

或者创建一个默认的模型绑定器,在模型绑定期间检查字段的值,如果字段为空,则不进行设置。

我试图避免在控制器中进行检查。如果您可以在模型级别使用check/default,那么它只需要定义一次就好了。我对MVC和EF还是相当陌生,但我真的很喜欢从模型级别的数据注释中获得的所有好处,并且正在尝试模仿它。我不确定我的edmx是否在昨晚更改了许多字段以允许空值时没有正确更新,但是当我今天尝试时,一切都在做我希望它做的事情(空字段插入空值)。是的。我想知道。当我进一步思考这个问题时,我意识到MVC确实将空白字段绑定为空。您可以使用注释
[DisplayFormat(ConvertEmptyStringToFull=false)]
对其进行更改,但默认情况下为true。不管怎样,很高兴它现在对你有用。