小编ger*_*ryM的帖子

通过实体框架将整数数组传递给T-SQL存储的proc

我已经阅读了许多文章,并认为我理解了这些概念,但是我的一小部分int无法从C#/ EF模块传递到SQL Server存储的proc。希望其他人都能发现问题所在。

我正在使用EF6、4.5 .Net Framework,SQL Server 2014

在数据库中,我创建了以下类型/过程:

CREATE TYPE [dbo].[IntsTTV] AS TABLE(
  [Id] [int] NOT NULL
)
Run Code Online (Sandbox Code Playgroud)

请注意,存在名为“ Person”的表,其中包含列“ Id”(int)和“ LastName”(nvarchar),并具有数据。

CREATE PROCEDURE [dbo].[GetUsers]
@UserIds dbo.IntsTTV READONLY
AS
BEGIN
  SELECT p.LastName
  FROM [dbo].[Person] p
  INNER JOIN @UserIds ids On p.Id = ids.Id;
END
Run Code Online (Sandbox Code Playgroud)

// C#代码

SqlMetaData[] columns = new SqlMetaData[1];
columns[0] = new SqlMetaData("Id", SqlDbType.Int);

SqlDataRecord row = new SqlDataRecord(columns);
row.SetInt32(0, 1);  // Id of '1' is valid for the Person table

SqlDataRecord[] table = new SqlDataRecord[1];
table[0] …
Run Code Online (Sandbox Code Playgroud)

c# sql-server stored-procedures entity-framework

4
推荐指数
2
解决办法
4081
查看次数