c# – 为什么我从存储过程中得到-1?

c# – 为什么我从存储过程中得到-1?,第1张

概述我使用SQL Server 2012和Entity Framework6. 我创建了表值参数: CREATE TYPE IdArray AS TABLE ( Id int); 在这里我的存储过程: ALTER PROCEDURE [dbo].[SP_TEST_TLP] @List dbo.IdArray READONLY AS BEGIN SET NOCOUNT 我使用sql Server 2012和Entity Framework6.

我创建了表值参数:

CREATE TYPE IDArray AS table (     ID int);

在这里我的存储过程:

ALTER PROCEDURE [dbo].[SP_TEST_TLP]    @List dbo.IDArray Readonly AS BEGIN    SET NOCOUNT ON;    SELECT *     FROM ClIEnts     WHERE ClIEnts.ID IN (select ID from @List)END

从Visual Studio我调用存储过程并将参数传递给存储过程.

我是这样做的:

创建Datatable:

var myDatatable = new Datatable(); myDatatable.Columns.Add("ID",typeof(int)); myDatatable.Rows.Add(1); myDatatable.Rows.Add(3); myDatatable.Rows.Add(6);

从Datatable创建sqlParameter:

sqlParameter parameter = new sqlParameter(); parameter.Parametername = "@List"; parameter.sqlDbType = System.Data.sqlDbType.Structured; parameter.Typename = "dbo.IDArray"; parameter.Value = myDatatable;

Fire存储过程和传递参数:

var data = _context.Database.ExecutesqlCommand("SP_TEST_TLP @List",parameter);

问题是ExecutesqlCommand返回-1.

为什么ExecutesqlCommand在我期望来自数据库的行时返回-1?

更新:

更改此行:WHERE ClIEnts.ID IN(‘@ List’)

对此:WHERE ClIEnts.ID IN(从@List中选择ID)

解决方法 ExecutesqlCommand返回一个int,用于 *** 作查询(Insert,Update)并返回受单个非查询影响的行数.
尝试使用ExecuteDatatable或类似结果.

这是一个很好的例子:
Retrieve a DataTable using a SQL Statement

总结

以上是内存溢出为你收集整理的c# – 为什么我从存储过程中得到-1?全部内容,希望文章能够帮你解决c# – 为什么我从存储过程中得到-1?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1220202.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-05
下一篇 2022-06-05

发表评论

登录后才能评论

评论列表(0条)

保存