通过EntityFramework插入默认值

时间:2012-11-08 21:40:57

标签: c# .net sql-server asp.net-mvc entity-framework

我的数据库中的标题字段有默认约束。在web app中,如果caption为空,则将NULL值传递给数据库,并且数据库返回异常,因为samo字段不能为null(Caption varchar(50)NOT NULL)。

那么,设置某个值(“” - 空字符串)或避免在没有提供值的情况下向数据库发送NULL的最简单方法是什么。我如何在EntityFrameowrk中设置它,或者在数据访问层中设置它??

5 个答案:

答案 0 :(得分:1)

在创建新实体后立即使用空字符串定义属性。例如,在构造函数中。 Example

在更新现有实体之前,您可以检查属性为null:

entity.StringProperty = entity.StringProperty ?? String.Empty;
_db.SaveChanges();

答案 1 :(得分:1)

在我的系统MVC4实体框架5.0上,我正在使用这样的,(DataAnnotation)

[DefaultValue = DateTime.Now]

public DateTime MyDateTime {get;组; }

}

或者像其他类型一样...... string.Empty

答案 2 :(得分:0)

这似乎是一个只有你才会知道的问题。 null值表示业务逻辑,供您查明。

是否应该更改数据库以允许null,因为它有意义?

应用程序应该在数据库中保存“-1”,因为它有一些含义,还是应该保存“”?

如果该值为null,应用程序是否应该完全提交该字段?

允许应用程序提交包含不相关数据的字段会影响该数据的未来价值吗?

根据我的经验,当null表示缺少关系或值时,我允许将值放在数据库中NULL。当该值不存在时,这意味着尚未发生应该或将要发生的行为。这只适合我自己,因为大多数人都是根据具体情况实现业务逻辑。

答案 3 :(得分:0)

在实体中,您可以在创建时初始化您的对象吗?我知道你可以在Linq做到。您是否可以进入实体对象的代码并在创建时将有问题的属性设置为默认值?

答案 4 :(得分:0)

在构造函数中设置它。

partial class MyEntityName {
    public MyEntityName() {
        this.Caption = "";
    }
}