如何在 ADO.NET 实体框架中使用存储过程

2024-01-12

我有3张桌子;我在 ADO.NET 实体框架中编写了一个存储过程。

ALTER PROCEDURE [dbo].[sp_GetDepartmanData]
(@departman nvarchar(50))
BEGIN
  SELECT  
    d.ID, d.Name as DepartmanName,  
    sb.Salary, sb.email,
    sp.Name, sp.SurName, sp.Phone, sp.Married, sp.Address
  FROM         
    Departman d 
  INNER JOIN StaffsBusiness sb ON d.ID = sb.StaffsPersonelDepartmanID
  INNER JOIN StaffsPersonel sp ON sb.StaffsPersonelID = sp.ID 
  WHERE
    d.Name = @departman
END

我需要一个存储过程函数,我在下面编写:

var staffPersonel = staffContext.GetPersonelInformationWithDepartmanID("Yazılım");

gvPersonel.DataSource = staffPersonel;
gvPersonel.DataBind();

我从 SQL 编写的 GetPersonelInformationWithDepartmanID 函数(ADO.NET 实体框架中的用户定义函数)有 3 个替代方案(这很愚蠢!!!),但我有 3 个连接表!!!。如果我之前加入了3张桌子,我该如何使用?


好的,您需要执行以下几个步骤:

  • 添加您的存储过程sp_GetDepartmanData到您的实体框架模型 (顺便说一句 - 这是strongly推荐NOT调用您的存储过程sp_(something)- 使用sp_前缀是为 Microsoft 专用的系统存储过程保留的)
  • 由于您的存储过程返回一组数据,因此您需要先为其创建一个概念实体,然后才能使用存储过程;在实体设计器中,创建一个新实体并为其命名一些有用的名称,例如DepartmentDataEntityType或者其他的东西;将从存储过程返回的所有字段添加到该实体类型
  • 现在,您可以在实体数据模型中创建函数导入 - 转到模型浏览器,在“model.store”部分中转到您的存储过程,然后右键单击“创建函数导入”
  • 您现在可以在对象上下文中为您的函数命名并定义它返回的内容 - 在这种情况下,选择您新创建的实体类型(例如DepartmentDataEntityType从上面)
  • 你完成了!

您现在应该有一个函数导入,如下所示:

public global::System.Data.Objects.ObjectResult<DepartmentDataEntityType> GetPersonelInformationWithDepartmanID(global::System.String departmentName)
{
    global::System.Data.Objects.ObjectParameter departmentNameParameter;

    departmentNameParameter = new global::System.Data.Objects.ObjectParameter("departmentNameParameter", departmentName);

    return base.ExecuteFunction<DepartmentDataEntityType>("sp_GetDepartmanData", departmentNameParameter);
}

现在可以调用对象上下文上的此函数,以通过存储过程从数据库检索数据。

Marc

Edit:

如果执行此操作后出现映射错误(“错误 3027:没有为以下 EntitySet/AssociationSet 指定映射”),这是因为您创建的实体未映射到任何内容,并且仅在函数导入填充集合时使用这些实体。您要么需要以某种方式将该实体映射到数据存储,要么需要将其更改为复杂类型。

要创建复杂类型,只需打开 EF 设计器并右键单击空白区域即可。转到添加 > 复杂类型。您应该会看到模型浏览器中出现一个新的复杂类型。右键单击它并添加标量属性,类似于向实体添加属性的方式。然后删除您的实体并将复杂类型重命名为与实体相同的名称。

这就是你所要做的:)

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

如何在 ADO.NET 实体框架中使用存储过程 的相关文章

  • 在 LINQ 中按 Id 连接多表和分组

    我想按categoryId显示列表产品的名称组 这是我的代码 我想要我的视图显示结果 Desktop PC HP Red PC Dell Yellow PC Asus Red SmartPhone Lumia 720 Blue 我的组模型
  • java.io.Serialized 在 C/C++ 中的等价物是什么?

    C C 的等价物是什么java io Serialized https docs oracle com javase 7 docs api java io Serializable html 有对序列化库的引用 用 C 序列化数据结构 ht
  • 使用接口有什么好处?

    使用接口有什么用 我听说它用来代替多重继承 并且还可以用它来完成数据隐藏 还有其他优点吗 哪些地方使用了接口 程序员如何识别需要该接口 有什么区别explicit interface implementation and implicit
  • 在 C 中初始化变量

    我知道有时如果你不初始化int 如果打印整数 您将得到一个随机数 但将所有内容初始化为零似乎有点愚蠢 我问这个问题是因为我正在评论我的 C 项目 而且我对缩进非常直接 并且它可以完全编译 90 90 谢谢 Stackoverflow 但我想
  • 为什么调用非 const 成员函数而不是 const 成员函数?

    为了我的目的 我尝试包装一些类似于 Qt 共享数据指针的东西 经过测试 我发现当应该调用 const 函数时 会选择它的非 const 版本 我正在使用 C 0x 选项进行编译 这是一个最小的代码 struct Data int x con
  • 具有交替类型的可变参数模板参数包

    我想知道是否可以使用参数包捕获交替参数模式 例如 template
  • 如何检测表单的任何控件的变化?

    如何检测 C 中表单的任何控件的更改 由于我在一个表单上有许多控件 并且如果表单中的任何控件值发生更改 我需要禁用按钮 我正在寻找一些内置函数 事件处理程序 属性 并且不想为此创建自定义函数 不 我不知道任何时候都会触发任何事件any控制表
  • 如何在 Xaml 文本中添加电子邮件链接?

    我在 Windows Phone 8 应用程序中有一些大文本 我希望其中有电子邮件链接 例如 mailto 功能 这是代码的一部分
  • C#:帮助理解 UML 类图中的 <>

    我目前正在做一个项目 我们必须从 UML 图编写代码 我了解 UML 类图的剖析 但我无法理解什么 lt
  • C# HashSet 只读解决方法

    这是示例代码 static class Store private static List
  • 如何禁用 fread() 中的缓冲?

    我正在使用 fread 和 fwrite 读取和写入套接字 我相信这些函数用于缓冲输入和输出 有什么方法可以在仍然使用这些功能的同时禁用缓冲吗 Edit 我正在构建一个远程桌面应用程序 远程客户端似乎 落后于服务器 我不知道可能是什么原因
  • C# 中的合并运算符?

    我想我记得看到过类似的东西 三元运算符 http msdn microsoft com en us library ty67wk28 28VS 80 29 aspx在 C 中 它只有两部分 如果变量值不为空 则返回变量值 如果为空 则返回默
  • 为什么 std::strstream 被弃用?

    我最近发现std strstream已被弃用 取而代之的是std stringstream 我已经有一段时间没有使用它了 但它做了我当时需要做的事情 所以很惊讶听到它的弃用 我的问题是为什么做出这个决定 有什么好处std stringstr
  • 外键与独立关系 - Entity Framework 5 有改进吗?

    我读过了several http www ladislavmrnka com 2011 05 foreign key vs independent associations in ef 4 文章和问题 https stackoverflow
  • AES 128 CBC 蒙特卡罗测试

    我正在 AES 128 CBC 上执行 MCT 如中所述http csrc nist gov groups STM cavp documents aes AESAVS pdf http csrc nist gov groups STM ca
  • 使用 %d 打印 unsigned long long

    为什么我打印以下内容时得到 1 unsigned long long int largestIntegerInC 18446744073709551615LL printf largestIntegerInC d n largestInte
  • 如果没有抽象成员,基类是否应该标记为抽象?

    如果一个类没有抽象成员 可以将其标记为抽象吗 即使没有实际理由直接实例化它 除了单元测试 是的 将不应该实例化的基类显式标记为抽象是合理且有益的 即使在没有抽象方法的情况下也是如此 它强制执行通用准则来使非叶类抽象 它阻止其他程序员创建该类
  • 无法接收 UDP Windows RT

    我正在为 Windows 8 RT 编写一个 Windows Store Metro Modern RT 应用程序 需要在端口 49030 上接收 UDP 数据包 但我似乎无法接收任何数据包 我已按照使用教程进行操作DatagramSock
  • Oracle Data Provider for .NET 不支持 Oracle 19.0.48.0.0

    我们刚刚升级到 Oracle 19c 19 3 0 所有应用程序都停止工作并出现以下错误消息 Oracle Data Provider for NET 不支持 Oracle 19 0 48 0 0 我将 Oracle ManagedData
  • 如何将 PostgreSql 与 EntityFramework 6.0.2 集成? [复制]

    这个问题在这里已经有答案了 我收到以下错误 实体框架提供程序类型的 实例 成员 Npgsql NpgsqlServices Npgsql 版本 2 0 14 2 文化 中性 PublicKeyToken 5d8b90d52f46fda7 没

随机推荐

  • import _socket:“导入错误:DLL 加载失败”

    我昨天尝试安装 Django 和 pymc 遇到很多问题后 我决定重新安装 Python 2 7 我已经这样做了 但现在导入几乎所有东西都遇到问题 我得到了一堆行 最后一行是 File c python27 lib httplib py l
  • 如何修复照片方向的角度

    我无法让照片在我的角度 节点应用程序中以正确的方式定向 我的应用程序已设置为使用 ng2 file upload 将文件从 Angular 应用程序发送到服务器 其中 multer 和 multer s3 将该照片保存在 AWS S3 中
  • 如何在一次休息 API 调用中从 azure key Vault 获取最新的秘密版本值

    如果我已经知道使用此端点的版本号 我可以从rest api中的azure key Vault获取秘密 https my key vault dev vault azure net secrets MyTestSecret 13f8347b8
  • 如何用FFMPEG正确将H264封装成FLV?

    首先 标题中的 适当 指的是这个相关问题 https stackoverflow com questions 44952940 ffmpeg how to wrap h264 stream into flv container 其中的答案并
  • 如何从 cmd 运行属于包一部分的 .class 文件?

    当我做我的事情时 我不断收到错误 class的一部分package并尝试从cmd运行它 这是使用后有效的代码javac然后是java class HelloWorld public static void main String args
  • NSURLErrorDomain:-1003

    当我在 Xcode 中运行我的应用程序时 我收到 NSURLErrorDomain 1003 我还没有在 StackOverflow 上看到这个错误 有任何线索吗 我正在使用阿拉莫菲尔 4 func fetchAllPosts Alamof
  • 尽管给出不同的答案来调用实际方法以返回静态方法执行

    我正在使用 powermockito 并且我正在嘲笑一个班级SomeUtil拥有所有静态方法 import java util List class SomeUtil other static methods public static X
  • WebSocket 握手:意外的响应代码:kubernetes-ingress 中的 400

    如果我连接到 Web 套接字服务的入口 则会遇到此问题 失败 WebSocket 握手期间出错 意外的响应代码 400 入口 YAML kind Ingress apiVersion extensions v1beta1 metadata
  • npm install 显示错误,未找到 git

    我最近向包 JSON 添加了一些依赖项并尝试安装 npm 但它显示与 git not find 相关的错误 npm 错误 路径gitnpm 错误 代码 ENOENTnpm 错误 错误信息npm 错误 系统调用派生 gitnpm 错误 eno
  • Ruby 中未初始化的常量 MyClass (NameError)

    我有一个模块 Shish 其作用类似于抽象类 和一个访问者类 Only Onions 我想在 Shish 模块中实例化 Only Onions 以便所有扩展 Shish 的类都可以使用该对象来确定它们是否只有 onions module S
  • Laravel 验证错误

    这是错误 Symfony Component Debug Exception FatalErrorException 调用 未定义方法 Illuminate Validation Validator make 这是我的代码 validato
  • 核心数据关系问题

    I m facing a weird issue with my core data I ve the following relationship 一个联系人可以属于一个类别 一个类别可以有多个联系人 我想在创建联系人时访问联系人中的我的
  • ODAC:未将对象引用设置为对象的实例

    我正在尝试连接到 Oracle Express 11g 我正在将 ODAC 12c 与 Visual Studio 2015 结合使用 以下是我尝试连接的方式 OracleConnection con con new OracleConne
  • 如何在文本块中处理意图(Java 13)

    我刚刚尝试了 Java 13 中的新文本块功能 遇到了一个小问题 我读过了这篇文章来自 Jaxcenter https jaxenter com java 13 text blocks 162278 html 结束的三引号会影响格式 Str
  • 我收到错误语法错误,意外的$end,期待keyword_end [关闭]

    Closed 这个问题是无法重现或由拼写错误引起 help closed questions 目前不接受答案 我是第一个使用 ruby 的人 所以当我遵循指南 http guides rubyonrails org getting star
  • 如何让一个类使用 applicationContext beans?

    我正在开发我的第一个 java struts2 webapp 并且希望能够将 bean 参数注入到任何被调用的类中 但我发现我只能用 struts 动作类来做到这一点 假设我的 applicationContext xml 文件中有这个 b
  • C++ 错误表达式不能用作函数

    我如何编辑我的公式 weekday day 2 month 3 month 5 year year 4 year 100 year 400 7 这样我就不会收到 表达式不能用作函数 的错误消息 include
  • 从 C 调用 Intel 8086 汇编程序

    我需要为汇编语言开发一个过程 并从 C 语言调用该过程 传递一个字符串并返回一个整数值 我的组装程序 独立 运行良好 我需要帮助将它们连接在一起 程序应该在 Intel 8086 上运行 我需要使用 MASM 或 emu8086 作为汇编器
  • 以编程方式分离 SQL Server 数据库以复制 mdf 文件

    我有一个小型 SQL Server 数据库 需要根据命令进行复制 我需要能够在任何给定时刻获取 mfd 和 ldf 文件 复制它们 压缩它们 然后将它们提供给最终用户 现在这可以通过手动实现 1 通过远程桌面登录SQL服务器 2 通过 SQ
  • 如何在 ADO.NET 实体框架中使用存储过程

    我有3张桌子 我在 ADO NET 实体框架中编写了一个存储过程 ALTER PROCEDURE dbo sp GetDepartmanData departman nvarchar 50 BEGIN SELECT d ID d Name