C# 通过EntityFramework插入默认值

C# 通过EntityFramework插入默认值,c#,.net,sql-server,asp.net-mvc,entity-framework,C#,.net,Sql Server,Asp.net Mvc,Entity Framework,我对数据库中的标题字段有默认约束。在web应用程序中,如果标题为空,则传递给数据库的空值和数据库返回异常,因为samo字段不能为空(标题varchar(50)不为空) 那个么,最简单的方法是设置一些值(“-空字符串”),或者在并没有提供值的情况下避免向数据库发送NULL。我如何在EntityFrameowrk中设置,或者在数据访问层中设置…?这似乎是一个只有您才会知道的问题。空值表示业务逻辑,这由您来确定 数据库是否应该更改为允许null,因为它在那里有意义 应用程序是否应该在数据库中保存“-1

我对数据库中的标题字段有默认约束。在web应用程序中,如果标题为空,则传递给数据库的空值和数据库返回异常,因为samo字段不能为空(标题varchar(50)不为空)


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

这似乎是一个只有您才会知道的问题。空值表示业务逻辑,这由您来确定

数据库是否应该更改为允许null,因为它在那里有意义

应用程序是否应该在数据库中保存“-1”,因为这具有某种意义,还是应该保存“”

如果该值为null,应用程序是否应该根本不提交该字段

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


根据我的经验,当NULL表示没有关系或值时,我允许将值作为
NULL
放置在数据库中。当该值不存在时,这意味着应该或将要发生的动作尚未发生。不过,这只是为了我自己,因为大多数人都是在个案的基础上实现业务逻辑。

在实体中,您可以在创建时初始化对象吗?我知道你可以在林克做到。您是否能够进入实体对象的代码内部,并在创建时将相关属性设置为默认值?

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

在更新现有实体之前,可以检查属性是否为空:

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

在构造函数中设置它

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

在我的系统MVC4 entity framework 5.0上,我使用的是这样的(DataAnnotation)

公共日期时间MyDateTime{get;set;}

}


或者像其他类型的
string.Empty

数据库不允许插入空值。@user1810618-您可以将字段更改为允许空值。我无法这样做,因为我无权更改数据库架构。@user1810618-然后将字段标记为
[必需]
,或者在构造函数中提供一个默认值
“”
,或者在提交数据时,确保该值至少为
”。这实际上取决于空值在该位置的含义。用户名可能不应为“”,而昵称是否为“”(前提是昵称不是唯一的关联)可能无关紧要。
[DefaultValue = DateTime.Now]