Rav*_*erg 2 c# sql-server entity-framework
在我的c#代码中,我有一个插入到我的数据库中,但它抛出异常
无法将值NULL插入列'BoxID',表'Moroccanoil_Replicated.dbo.Boxes'; 列不允许空值.INSERT失败.
然而,当调试这段代码时,我看到该框实际上不是null,当我在我的SQL SM中测试相同的精确插入时更进一步它工作得很好.
编辑:
出于某种原因,这是根据探查器实际执行的查询:
exec sp_executesql
N'INSERT [dbo].[Boxes]([MasterBoxID], [DateTime], [Reported], [StationID])
VALUES (NULL, @0, @1, @2)
SELECT [BoxID]
FROM [dbo].[Boxes]
WHERE @@ROWCOUNT > 0 AND [BoxID] = scope_identity()',
N'@0 datetime2(7),@1 bit,@2 int',@0='2015-11-30 13:37:46.4714394',@1=0,@2=7
Run Code Online (Sandbox Code Playgroud)
有谁知道为什么这个以及如何解决它?
更多相关信息:
如评论中所述:
很可能EF不会传递ID参数,因为它认为该值是由数据库创建的.这意味着您应该关闭此列的DatabaseGeneratedOptions.Identity.
使用DatabaseGeneratedOption.Identity,EF不会将ID值传递给数据库,因为它怀疑它是由DBMS提供的.当它怀疑具有给定Id值的对象在数据库中时,这可能导致此问题或DbUpdateConcurrencyException,但实际上它已被DBMS更改.
| 归档时间: |
|
| 查看次数: |
1832 次 |
| 最近记录: |