我对数据库中的标题字段有默认约束。在 Web 应用程序中,如果标题为空 NULL 值传递给数据库并且数据库返回异常,因为 samo 字段不能为空(Caption varchar(50) NOT NULL)。
那么,如果确实没有提供值,那么设置某个值(“” - 空字符串)或避免将 NULL 发送到数据库的最简单方法是什么。我如何在 EntityFrameowrk 或数据访问层中设置它......?
我对数据库中的标题字段有默认约束。在 Web 应用程序中,如果标题为空 NULL 值传递给数据库并且数据库返回异常,因为 samo 字段不能为空(Caption varchar(50) NOT NULL)。
那么,如果确实没有提供值,那么设置某个值(“” - 空字符串)或避免将 NULL 发送到数据库的最简单方法是什么。我如何在 EntityFrameowrk 或数据访问层中设置它......?
只需在创建新实体后立即使用空字符串定义属性。例如,在构造函数中。例子
在更新现有实体之前,您可以检查属性是否为空:
entity.StringProperty = entity.StringProperty ?? String.Empty;
_db.SaveChanges();
在我的系统 MVC4 实体框架 5.0 上,我使用的是这样的,(DataAnnotation)
[DefaultValue = DateTime.Now]
公共日期时间 MyDateTime { 获取;放; }
}
或者像其他类型一样...string.Empty
在实体中,您可以在创建时初始化您的对象吗?我知道你可以在 Linq 中做到这一点。您是否能够进入实体对象的代码并在创建时将相关属性设置为默认值?
在构造函数中设置它。
partial class MyEntityName {
public MyEntityName() {
this.Caption = "";
}
}
这似乎是一个只有你会知道的问题。空值代表业务逻辑,由您自己弄清楚。
是否应该更改数据库以允许空值,因为它在那里有意义?
应用程序应该在数据库中保存“-1”,因为这有一些意义,还是应该保存“”?
如果该值为空,应用程序是否应该根本不提交该字段?
允许应用程序提交包含不相关数据的字段是否会影响该数据的未来价值?
根据我的经验,我允许将值放置在数据库中,NULL
因为 null 表示不存在关系或值。当该值不存在时,这意味着应该或将要发生的动作尚未发生。不过,这仅适用于我自己,因为大多数人会根据具体情况实施业务逻辑。