如何从.net core实体框架调用带有表值参数的存储过程

2024-01-14

我有一个带有表值参数的存储过程。 我必须从.net core 中的实体框架调用它。

我在上下文对象上找不到任何 API。

我尝试过使用 ADO.net API,它有效,但现在我必须从 .net core 中的 EF 调用它。我必须调用的存储过程返回我必须捕获的结果。

我的示例SP如下

CREATE PROCEDURE [dbo].[GetMyData] 
@MyRequest [dbo].[MyRequestType] Readonly
As 
BEGIN

--Its sample SP thats why returned request table as it is    
select * from @MyRequest


END

MyRequestType是用户定义的表类型

它的结构如下

CREATE TYPE [dbo].[MyRequestType] AS TABLE(
    [Id] [numeric](22, 8) NULL,
    [Col1] [bigint] NULL,
    [Col2] [numeric](22, 8) NULL 
) 

我在 EF core 中使用代码优先方法

任何帮助将不胜感激。


最后,我可以从使用 EF core 的 .net core 服务调用表值参数存储过程

我创建了假响应域模型

   public class MyResponse
    {
        public int Id { get; set; }
        public int Col1{ get; set; }
        public int Col2 { get; set; } 
    }

我称其为假域模型,因为域模型通常是 CLR 类中的表表示,但我在 SQL Server 中没有这样的表。

然后我在 Context 类下添加了属性,如下所示

public class MyQueryDbContext : DbContext
{
  public virtual DbSet<MyResponse> Data { get; set; }
    .
    .
    .
}

然后需要为请求参数列表创建数据表,我添加如下

 DataTable table = new DataTable();
 table.Columns.Add("Id", typeof(int));
 table.Columns.Add("Col1", typeof(int));
 table.Columns.Add("Col2", typeof(int));

然后我使用 EF 从 .net core API 调用存储过程,并将数据表作为参数传递,如下所示

 var parameter = new SqlParameter("@MyRequest", SqlDbType.Structured);
 parameter.Value = table;
 parameter.TypeName = "[dbo].[MyRequestType]" // My Table valued user defined type
var response=_context.Data
                     .FromSql("EXEC [dbo].[GetMyData] @MyRequest", parameter)
                     .ToList()

您将在响应变量中得到响应。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何从.net core实体框架调用带有表值参数的存储过程 的相关文章

随机推荐

  • Eclipse:查找方法的调用树

    I know that Ctrl Shift G gives an output of all the methods that call directly the method I m searching for But how can
  • 如何在 FFMPEG 中使用 Blend / tblend 过滤器与 t 变量和 Between 语句

    我想使用blend or tblend过滤器与t变量between陈述 我愿意接受其他能够达到相同效果的解决方案 我知道图像可以在视频上转置 例如之间00 00 01 000 to 00 00 02 000 ffmpeg i input m
  • django admin动态设置changeform初始数据

    我正在使用默认的 m2m 小部件通过中间模型实现 m2m 关系 我有Person and Project相关模型使用Membership model 到目前为止 我已经成功地在Person更改形式并正确创建中间模型实例 但我的问题是在Per
  • selenium PhantomJS send_keys 不起作用

    我正在使用 selenium 和 PhantomJS 进行测试 我遵循了 Selenium 的简单用法 但是 send keys 不适用于 PhantomJS 它适用于 Firefox 为什么 我必须使用button click 反而 us
  • Django 验证错误

    根据https docs djangoproject com en dev ref forms validation https docs djangoproject com en dev ref forms validation Good
  • Ruby 解释器 (CUI) 1.9.2p180 [i386-mingw32] 已停止工作(我没有使用 MySQL)

    我的 ruby 解释器在几乎每个页面请求上都会崩溃 并出现以下错误 Ruby 解释器 CUI 1 9 2p180 i386 mingw32 已停止工作 我没有使用 MySQL 也没有安装 gem 因为许多在线帖子都建议这是一个潜在原因 我可
  • *nix 伪终端如何工作?什么是主/从通道?

    我想在 Linux 系统上用 C 语言编写一个简单 愚蠢的 X 终端模拟器 起初 我只是想我必须打开一个 shell 并显示其输出 我检查了xterm和rxvt代码 看起来有点复杂 首先 我必须使用 openpty 打开一个伪终端 所以我查
  • 将 1 到 32 位数字附加到字符缓冲区

    我有一个char 缓冲区 我想附加各种位大小的整数 在1 and 32 to 因此 我需要一个函数 void addBits char buffer int bits appended so far int object int objec
  • 追加 DOM 元素两次 (jQuery)

    有人可以解释为什么以下代码片段没有添加
  • 并发写入同一缓存行中的不同位置

    假设我有一个 C 11 应用程序 其中两个线程写入不同但邻近内存位置 使用指向原始类型的简单指针 我能否确定这两个写入最终都会进入内存 可能在两者都达到boost barrier http www boost org doc libs 1
  • Rabbitmq 使用 .NET 使用单个同步调用检索多条消息

    有没有办法使用 NET 使用单个同步调用来接收多条消息 我见过question https stackoverflow com questions 17005515 rabbitmq retrieve multiple messages u
  • 如何对 Rails 中 Prawnto 生成的 PDF 进行内联格式(粗体和下划线)?

    我在 Rails 应用程序中使用 Prawn 和 Prawnto 插件生成 PDF 文件 我创建一个带有标准文本区域的标准表单 并将其作为 PDF 文件的正文提交 但是 我需要能够使用以下方式格式化单词和句子 bold 强调 也许不同的字体
  • 受影响的行实体框架

    如何获取 SaveChanges 后受影响的行数 The 保存更改 http msdn microsoft com en us library bb336792 aspx方法返回所有已更改项目的 int MSDN 片段 返回值 类型 Sys
  • 在javascript中选择区域/矩形

    我需要通过鼠标在 HTML5 页面中选择一个区域 然后我将与该区域内的元素进行交互 一定有一种简单的方法可以做到这一点 但我找不到现成的任何东西 不幸的是 jquery UI 选择不起作用 因为它似乎只支持一个父元素 有没有现成的东西可以在
  • 如何以编程方式突出显示 UIButton?

    很多用户抱怨 iPhone 上的小 i 信息按钮很难触摸 好吧 很简单 我只是在它后面贴了一个又大又大的隐形按钮 即使你用最粗心的手指触摸也不会错过它 当你触摸它时 它就会执行 infoButtonAction 事实是 我想让信息按钮本身闪
  • 递归算法的空间复杂度

    我在一次面试中被问到 解决问题的有效方法是检查回文 现在我可以做两件事 从 i 0 开始到 i n 2 并比较第 i 个和第 n 个字符是否相等 我可以使用递归来检查第一个和最后一个是否相同 并且字符串的其余部分是否为回文 第二个是递归的
  • 垃圾收集机制如何工作? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 用外行术语来说 垃圾收集机制是如何工作的 如何识别对象可用于垃圾回收 还有 做什么Reference Counting Mark an
  • 如何判断 Map 是否有默认值?

    有没有办法检查是否Map有定义的默认值吗 我想要的是相当于myMap getOrElse x y 如果关键在哪里x不在地图上 if myMap有默认值 返回该值 否则返回y 该问题的一个人为示例 scala gt def f m Map S
  • 如何在 MFC 应用程序中托管 WPF 表单

    我正在寻找有关在现有 MFC 应用程序中托管 WPF 表单的任何资源 谁能指出我如何做到这一点的正确方向 据我了解 我自己没有尝试过 这几乎就像将 WPF 控制权交给父级句柄一样简单 这是一个演练 在 Win32 中托管 WPF 内容 ht
  • 如何从.net core实体框架调用带有表值参数的存储过程

    我有一个带有表值参数的存储过程 我必须从 net core 中的实体框架调用它 我在上下文对象上找不到任何 API 我尝试过使用 ADO net API 它有效 但现在我必须从 net core 中的 EF 调用它 我必须调用的存储过程返回