c# - 如何调用需要复杂类型作为参数之一的存储 SQL 过程?
问题描述
我在数据库中存储了我尝试从 C# 调用的过程。它看起来像这样:
using (var connection = new SqlConnection(connectionString))
{
connection.Open();
try
{
SqlCommand cmd = new SqlCommand("dbo.NameOfMyProcedure", connection);
cmd.CommandType = System.Data.CommandType.StoredProcedure;
SqlParameter firstParam = new SqlParameter("@FirstParam", new
{
Message_ID = message.MessageId,
Created = createdTime,
Type = 0,
...
});
SqlParameter secondParam = new SqlParameter("@SecondParam", null);
cmd.Parameters.AddRange(new SqlParameter[] { firstParam, secondParam });
cmd.ExecuteNonQuery();
}
finally
{
connection.Close();
}
该过程需要两个参数,一个可以为空的 varchar ( ) 和在 DB ( ) 中定义的@SecondParam
复杂类型 ( )。@FirstParam
Programmability -> Types -> User-Defined Table Types
我试图完全匹配 DB 中的类型并创建匿名类型,希望它将我的类型转换为 DB 类型并且一切正常。然而,这并没有奏效。我得到 ArgumentException: No mapping exists from object type (...) to a known managed provider native type
。如何在不必使用 EF 并将所有这些类型生成到 C# 类中的情况下将复杂类型传递给 DB 过程?
解决方案
推荐阅读
- circleci - CircleCI 分支构建失败但标签构建成功
- javascript - Javascript依次获取具有查询字符串参数的查询字符串参数值
- machine-learning - 具有分类值的 KNN 无法正确预测
- javascript - 插入具有完整性和跨域属性问题的链接标签
- node.js - 获取导入模块的文件路径
- alert - Zenoss - 创建基于应用程序的警报
- javascript - 这个语法在js中是什么意思?
- maven - 我如何使用 kscript 编译 kotlin tornadofx?
- python - matplot lib和python中的条形图列表中的项目分组
- json - PostgreSQL,根据并行属性的值获取 JSON 对象字段