gpt4 book ai didi

entity-framework - Entity Framework 和表值参数

转载 作者:行者123 更新时间:2023-12-04 01:36:48 24 4
gpt4 key购买 nike

我正在尝试从 调用存储过程 Entity Framework 使用 表值范围。

但是当我尝试执行函数导入时,我不断收到一条警告消息,说 -

The function 'InsertPerson' has a parameter 'InsertPerson_TVP' at parameter index 0 that has a data type 'table type' which is currently not supported for the target .NET Framework version. The function was excluded.



我在这里进行了初步搜索,发现很少有帖子说在 EntityFrameWork 中有一些变通办法和 few 是可能的。说它在当前版本中不受支持。

有没有人知道这个问题的更好方法或解决方案?

最佳答案

我最终这样做了,请注意我们正在开发 EF DataContext (不是 ObjectContext )

使用输出参数 执行存储过程

       using (DataContext context = new DataContext())
{
////Create table value parameter
DataTable dt = new DataTable();
dt.Columns.Add("Displayname");
dt.Columns.Add("FirstName");
dt.Columns.Add("LastName");
dt.Columns.Add("TimeStamp");

DataRow dr = dt.NewRow();
dr["Displayname"] = "DisplayName";
dr["FirstName"] = "FirstName";
dr["LastName"] ="LastName";
dr["TimeStamp"] = "TimeStamp";
dt.Rows.Add(dr);

////Use DbType.Structured for TVP
var userdetails = new SqlParameter("UserDetails", SqlDbType.Structured);
userdetails.Value = dt;
userdetails.TypeName = "UserType";

////Parameter for SP output
var result = new SqlParameter("ResultList", SqlDbType.NVarChar, 4000);
result.Direction = ParameterDirection.Output;

context.Database.ExecuteSqlCommand("EXEC UserImport @UserDetails, @ResultList OUTPUT", userdetails, result);

return result == null ? string.Empty : result.Value.ToString();
}

我的 表值参数 (UDT 表)脚本如下所示:
CREATE TYPE [dbo].[UserType] AS TABLE (
[DisplayName] NVARCHAR (256) NULL,
[FirstName] NVARCHAR (256) NULL,
[LastName] NVARCHAR (256) NULL,
[TimeStamp] DATETIME NULL
)

还有我的 存储过程开始像
CREATE PROCEDURE UserImport 
-- Add the parameters for the stored procedure here
@UserDetails UserType Readonly,
@ResultList NVARCHAR(MAX) output
AS

对于没有 output 的存储过程参数我们不需要任何输出参数添加/传递给 SP。

希望它可以帮助某人。

关于entity-framework - Entity Framework 和表值参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13601366/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com