添加像这样的新记录
ContentContacts c2 = new ContentContacts();
c2.updated_user = c2.created_user = loggedUserId;
c2.created_date = c2.updated_date = DateTime.UtcNow;
db.ContentContacts.AddObject(c2);
我正在
无法将值NULL插入列'main_email_support',表'SQL2008R2.dbo.ContentContacts';列不允许空值。 INSERT失败。声明已经终止。
但数据库中的默认值是一个空字符串,如:
为什么我会收到这样的错误? EF不应该说:
“哦,它是
null
值,所以让我们添加列默认值”
答案 0 :(得分:6)
我做了一个小测试,创建了一个包含默认值但不允许空值的列的表。
然后这个SQL语句:
INSERT INTO [Test].[dbo].[Table_1]
([TestText])
VALUES
(null)
给出了这个错误:
Msg 515,Level 16,State 2,Line 1
无法将值NULL插入列'TestText',表中 'Test.dbo.Table_1';列不允许空值。 INSERT失败。
这里的问题是insert指定了所有列,也指定了具有默认值的列。 Insert尝试使用空值更新列。
您有两个选择:
默认值是业务逻辑,因此可以在应用程序的业务层中设置它。