Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql WCF RIA服务获取插入行的ID_Sql_Wcf_Key_Wcf Ria Services_Identity - Fatal编程技术网

Sql WCF RIA服务获取插入行的ID

Sql WCF RIA服务获取插入行的ID,sql,wcf,key,wcf-ria-services,identity,Sql,Wcf,Key,Wcf Ria Services,Identity,我正在使用WCF RIA服务。我没有使用实体和直接sql。 在我的例子中,存储过程和复杂类型完成了所有工作。所以我面临这样一个问题: 使用存储过程插入行时,无法从数据库自动更新其ID。在使用实体和直接sql的情况下,一切都很顺利。 以下是我的存储过程: BEGIN -- SET NOCOUNT ON added to prevent extra result sets from -- interfering with SELECT statements. insert i

我正在使用WCF RIA服务。我没有使用实体和直接sql。 在我的例子中,存储过程和复杂类型完成了所有工作。所以我面临这样一个问题: 使用存储过程插入行时,无法从数据库自动更新其ID。在使用实体和直接sql的情况下,一切都很顺利。 以下是我的存储过程:

BEGIN
    -- SET NOCOUNT ON added to prevent extra result sets from
    -- interfering with SELECT statements.
    insert into Product
    (       
       [Name]
      ,[Note]  )
      values
      (      
    @Name,
    @Note   
      )      
      select SCOPE_IDENTITY() as ID

END

解决这一问题的唯一方法是在插入后重新加载所有数据。我认为加载所有数据不是一个好主意,因为只有一行必须更新。第二种方法是编写更多代码从SQL Server手动获取新id,但我相信一定有更好的方法。

也许这是我对WCF的无知,但是为什么这不起作用呢?你为什么要重新装弹?调用此过程应返回一个带有新生成id的行和列(使用scope_identity而不是@@identity的额外点数)。newIdentity=(int)mySqlCmd.ExecuteScalar();虽然你的帖子很好,但WCF RIA服务提供了一些其他机会:-)。因此,我想知道它们是否适用于存储过程。如果您手动更新插入操作代码中的ID(在执行存储过程之后),则该值应返回到客户端。这实际上是问题所在。在插入操作之后,如果新插入行,则ID仍为“0”。当我使用直接sql(例如EF的标准CRUD操作)时,该ID会自动更新。我在set方法上设置了breackpoint,因为它实际上是更新的,而在我使用存储过程时它甚至没有被调用?看来,这正是我现在需要的。谢谢