Asp.net InvalidOperationException:无法分配空值。。。。调用SubmitChanges时

Asp.net InvalidOperationException:无法分配空值。。。。调用SubmitChanges时,asp.net,visual-studio-2010,sql-server-2008,identity-column,insertonsubmit,Asp.net,Visual Studio 2010,Sql Server 2008,Identity Column,Insertonsubmit,我有一个带有标识列的表a。 当我通过visualStudio插入一行时,它在SubmitChanges中失败,出现以下错误: InvalidOperationException: The null value cannot be assigned to a member with type System.Int32 which is a non-nullable value type 我在谷歌上搜索了一下,发现了一些关于同一问题的讨论。其中之一是。 它说这是因为过程返回空值。 我照上面写的做了

我有一个带有标识列的表a。 当我通过visualStudio插入一行时,它在
SubmitChanges
中失败,出现以下错误:

InvalidOperationException: The null value cannot be assigned to a member with type System.Int32 which is a non-nullable value type
我在谷歌上搜索了一下,发现了一些关于同一问题的讨论。其中之一是。 它说这是因为过程返回空值。 我照上面写的做了。已使用sql跟踪,请复制insert命令并在sql server中运行它。 它确实返回null,但行插入正确!!! 命令在sql跟踪中的状态:

exec sp_executesql N'INSERT INTO [dbo].[MyName_Tbl]([x], [y], [z], [c], [v], [b], [n], [m], [a], [s], [d], [f], [g], [h], [j], [k], [l], [q], [w], [e], [r])
VALUES (@p0, @p1, @p2, @p3, @p4, @p5, @p6, @p7, @p8, @p9, @p10, @p11, @p12, @p13, @p14, @p15, @p16, @p17, @p18, @p19, @p20)

SELECT CONVERT(Int,SCOPE_IDENTITY()) AS [value]',N'@p0 varchar(8000),@p1 varchar(8000),@p2 nvarchar(4000),@p3 nvarchar(4000),@p4 varchar(8000),@p5 nvarchar(4000),@p6 varchar(8000),@p7 varchar(8000),@p8 nvarchar(4000),@p9 nvarchar(4000),@p10 nvarchar(4000),@p11 nvarchar(4000),@p12 nvarchar(4000),@p13 varchar(8000),@p14 varchar(8000),@p15 nvarchar(4000),@p16 varchar(8000),@p17 nvarchar(4000),@p18 nvarchar(4000),@p19 nvarchar(4000),@p20 decimal(5,2)',@p0='406',@p1='Kabala',@p2=N'01/05/2012 13:47:01',@p3=N'k406/00033',@p4='406/00033',@p5=N'xxx',@p6='127.0.0.1',@p7='10',@p8=N'yyy',@p9=N'hh hh',@p10=N'0527159080',@p11=N'',@p12=N'',@p13='4580',@p14='1',@p15=N'Visa',@p16='0115',@p17=N'10',@p18=N'0',@p19=N'0232323',@p20=0

您能解释一下问题是什么,以及为什么在sql中它执行正确,而在VS中我得到了错误吗?

您收到的错误与无效的sql语句无关,这解释了为什么直接在sql Server上执行时它工作正常

您的应用程序出现错误,原因很简单,SQL语句应该返回一个int,其中包含插入表中的最后一个id的值,但返回的却是NULL值,这会使您的程序阻塞,因为NULL不能分配给int,除非您将其声明为
可为NULL
(int?)