我已经阅读了许多文章,并认为我理解了这些概念,但是我的一小部分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)