无法将NULL插入实体框架中的非标识列。有趣的事......它不是空的吗?

时间:2011-10-11 21:20:56

标签: entity-framework edmx

我有一个SalesOrder表,其中包含ID和OrderID的列。 ID是自动生成的int。 OrderID是一个不可为空的字符串,最大长度为20,我们用它来存储客户的订单号以供参考。

添加新的SalesOrder并调用SaveChanges后,出现以下错误:

无法将值NULL插入“OrderID”列,表'SalesOrder';列不允许空值。 INSERT失败。 该声明已被终止。

问题是,我实际保存的对象 有一个OrderID!它几乎就像是在保存所有值之前先尝试保存实体。这是EF处理事情的方式吗?

我的设置是EF4.1,使用EDMX模型优先方法。 StoreGeneratedPattern设置为None。默认值当前设置为(无)但我尝试了各种值。实体密钥为假,因为它不是密钥的一部分。我还尝试删除SalesOrder实体并从数据库中重新生成它。

1 个答案:

答案 0 :(得分:0)

我还想看看你的代码......在循环中填充对象然后用savechanges保存它们时遇到了类似的问题。我认为所有的田地都已填充,但它们不是。

我必须在保存更改之前看到您执行的代码,然后我才能提供任何真正有用的功能。

如果您的问题与我的问题类似,并且在使用迭代器填充对象后调用savechanges,则可以通过将savechanges移动到迭代器中来查找错误数据,以便每次迭代都调用它...但这是所有假设的猜测都没有看到你的代码...