使用 ExecuteSqlCommand 调用存储过程(需要未提供的参数)

2024-05-04

我正在尝试使用 EF 调用存储过程context.Database.ExecuteSqlCommand因为我的参数之一是数据表。

以下是该过程的参数:

ALTER PROCEDURE [mySchema].[myProc]
    @customerId INT,
    @indicatorTypeId INT,
    @indicators [mySchema].[IndicatorList] READONLY,
    @startDate DATETIME,
    @endDate DATETIME

这是调用存储过程的 C# 代码:

var indicatorsDt = new DataTable();

indicatorsDt.Columns.Add("Date", typeof(DateTime));
indicatorsDt.Columns.Add("Ongoing", typeof(int));
indicatorsDt.Columns.Add("Success", typeof(int));
indicatorsDt.Columns.Add("Warning", typeof(int));
indicatorsDt.Columns.Add("Error", typeof(int));
indicatorsDt.Columns.Add("Other", typeof(int));

var customerIdParam = new SqlParameter("customerId", SqlDbType.Int);
customerIdParam.Value = customerId;

var typeIdParam = new SqlParameter("indicatorTypeId", SqlDbType.Int);
typeIdParam.Value = typeId;

var startDateParam = new SqlParameter("startDate", SqlDbType.DateTime);
startDateParam.Value = startDate;

var endDateParam = new SqlParameter("endDate", SqlDbType.DateTime);
endDateParam.Value = endDate;

foreach (var indicator in indicators)
{
    indicatorsDt.Rows.Add(indicator.Date, indicator.Ongoing, 
                          indicator.Success, indicator.Warning, 
                          indicator.Error, indicator.Other);
}

var tableParameter = new SqlParameter("indicators", SqlDbType.Structured);
tableParameter.Value = indicatorsDt;
tableParameter.TypeName = "MySchema.IndicatorList";

context.Database.ExecuteSqlCommand("exec MySchema.MyProc", customerIdParam, typeIdParam, tableParameter, startDateParam, endDateParam);

如您所见,提供了所有参数,没有一个参数为空值,但我总是得到这个SqlException :

过程或函数“UpdateIndicators”需要参数 未提供“@customerId”。

我不知道我错过了什么。是使用SqlParameter错误的 ?参数以相同的顺序提供ExecuteSqlCommand即使这并不重要。

预先感谢。


您正在执行的 SQL 字符串中缺少参数。尝试在名称前添加“@”创建参数,然后将 ExecuteSqlCommand 调用更改为:

context.Database.ExecuteSqlCommand("exec MySchema.MyProc @customerId, @indicatorTypeId, @indicators, @startDate, @endDate", customerIdParam, typeIdParam, tableParameter, startDateParam, endDateParam);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 ExecuteSqlCommand 调用存储过程(需要未提供的参数) 的相关文章

随机推荐

  • 使用Python Selenium访问网页上的表对象

    一段时间以来 我尝试从网页中提取下表 我正在尝试进入网站上不同页面的 tr 对象 1 8 我设法存储并打开页面 并希望循环遍历表 tbody 其中包含 tr 对象 表示我想要访问的信息行 然而 当运行以下代码时 我只获得所有 8 个页面中的
  • Angular 模板调用函数可以返回 Promise

    Angular 的 q 文档 http docs angularjs org api ng 24q说 q 承诺被模板引擎以角度方式识别 这意味着在模板中 您可以将附加到范围的承诺视为结果值 Angular 的视图模板还允许您计算表达式 这意
  • Ruby 中的数字运算(需要优化)

    Ruby 可能不是最适合这种情况的语言 但我很乐意在我的终端中使用它 所以这就是我要使用的 我需要处理从 1 到 666666 的数字 因此我找出包含 6 但不包含 7 8 或 9 的所有数字 第一个数字是6 下一个16 then 26等等
  • 如何在Django表单中设置密码显示/隐藏眼睛按钮

    首先 我将尝试使用原生 HTML 和 jquery 来解决这个问题 但我想以 Django 形式解决这个问题 而不需要任何脚本 我会尝试this https itsolutionstuff com post bootstrap show h
  • 如何在R中使用twoord.plot()绘制多个图(分面)?

    我的数据看起来像这样 height lt c 1 2 3 4 2 4 6 8 weight lt c 12 13 14 15 22 23 24 25 person lt c Jack Jim Jill Tess Jack Jim Jill
  • 如何为导航抽屉的菜单项赋予颜色?

    我正在创建导航抽屉 我看到 Play 商店有彩色菜单图标 我想知道我该怎么做 我尝试在菜单图标上按颜色过滤器应用颜色 但应用程序强制关闭 这是我的代码 menu menu
  • 使用 JArray 从 JSON 获取值

    我有以下字符串 json 格式 我从我的服务器得到 ruta 1 division 7 ruta 2 division 7 ruta 3 division 7 ruta 4 division 7 ruta 5 division 7 ruta
  • 带有 xml 样式表的 XslTransform

    好像大家都说如果使用XslTransform 会先调用Load加载样式表 然后调用Transform进行转换 但是我有以下 XML 文件 我是否应该先加载xml 找到样式表节点 然后调用Load来加载样式表 或者还有其他方法吗 是处理指令
  • 为什么这个 C++ STL 分配器不分配?

    我正在尝试编写一个派生自的自定义 STL 分配器std allocator 但不知何故所有的电话allocate 去基础班 我已将范围缩小到以下代码 template
  • 创建持久身份验证 cookie 时出现问题:ASP.NET MVC

    好的 这是我创建身份验证 cookie 的代码 get user s role List
  • 找出右键单击的 DOM 元素

    我使用以下代码片段来构建自定义上下文菜单
  • AudioTrack 可以播放 MIDI 文件吗?

    我想知道AudioTrack Android可以播放MIDI文件吗 如果没有的话哪个库可以 因为我想要 Android 库 可以为我的应用程序播放和控制 MIDI 文件的速度 从这里检查 Android 支持的媒体格式Android 媒体支
  • NodeJS + Express + Mongo 会话存储

    我目前在尝试在 MongoDb 中存储会话时遇到了很大的麻烦 我尝试过express session mongo和connect mongodb 当我尝试加载登录页面时 两者都给出了相同的 500内部服务器错误 这让我觉得也许在某个地方与
  • 使用 Poppler Qt4 C++

    我需要在我的应用程序中使用 pdf 查看器库 我使用 C 和 QT 我下载了Poppler http poppler freedesktop org 和代码示例Poppler Qt4 界面库 http people freedesktop
  • 从应用程序访问 iCloud Drive 文件

    我希望我的应用程序支持 iCloud 以便我可以存储和获取 PDF 文件 我的问题是 如何在不使用 iCloud 的情况下访问 iCloud 驱动器文件UIDocumentPickerViewController 实际上我想在我的应用程序中
  • 如何以编程方式检测我的应用程序是否在 ASP.NET 页面中以 IIS 7.0 集成模式运行

    一般来说 我们应该控制我们的 AppPools 并能够强制使用托管管道模式 就我而言 我没有控制权 并且希望根据托管管道模式 集成与经典 以稍微不同的方式实现代码背后的代码 我只是不知道如何检测到这一点 有没有一种简单的方法可以从代码隐藏页
  • 使用 MapBox GL JS 无需访问令牌

    有没有办法使用MapBox GL JS没有访问令牌 我在文档中找不到任何提示MapBox GL JS https docs mapbox com mapbox gl js api 然而 Uber建议是可以通过他们的图书馆 https ube
  • 如何设置 MPEG-4 文件的“媒体创建”日期

    我有许多从各种数码相机格式转码的 MPEG 4 文件 其文件系统修改日期是正确的 我想设置 媒体创建 标签来匹配 这可以通过 属性 窗口的 详细信息 选项卡在 Windows 资源管理器中手动完成 设置 媒体创建 非常有用 因为 Windo
  • 强制 WcfSvcHost.exe 使用我的自定义服务主机

    是否可以强制 WcfSvcHost 当我执行 F5 或在解决方案中调试另一个项目时自动执行 使用自定义 ustom 服务 通过使用服务工厂 我的自定义服务主机在我的 asp net 主机容器中运行良好 该服务工厂又调用自定义服务库 但是当
  • 使用 ExecuteSqlCommand 调用存储过程(需要未提供的参数)

    我正在尝试使用 EF 调用存储过程context Database ExecuteSqlCommand因为我的参数之一是数据表 以下是该过程的参数 ALTER PROCEDURE mySchema myProc customerId INT