当实体映射到存储过程时,如何在调用 SaveChanges() 后获取实体的标识

2023-12-27

我们使用实体框架 4.0,并且有一个映射到 DBA 提供的存储过程的实体。映射详细信息中的插入、更新和删除函数都有自己的存储过程。

当使用映射到表的实体时,我可以添加新实体,调用dataContext.SaveChanges();然后我实例化的新实体会自动使用数据库中标识列的值填充其 ID 属性。

当实体映射到存储过程时如何实现这一点? INSERT 存储过程是否必须做一些特殊的事情和/或我必须做一些特殊的事情dataContext.SaveChanges();?

Example

传统方式

var newCustomer = new Customer
{
    Name = "Fred",
    Age = 24
};

// newCustomer.Id is null

dataContext.Customers.Add(newCustomer);
dataContext.SaveChanges()

// newCustomer.Id is what database identity column was set to.

映射到存储过程。

var newCustomer = new Customer
{
    Name = "Fred",
    Age = 24
};

// newCustomer.Id is null

dataContext.Customers.Add(newCustomer);
dataContext.SaveChanges()

// newCustomer.Id is null

如果您在数据库中使用标识列,请确保您的存储过程包含:

SELECT Scope_Identity() AS Id

打电话后INSERT

还要确保实体模式下的 PK 已正确配置StoreGeneratedPattern set to Identity(如果您使用过,应该是自动的从数据库更新)

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

当实体映射到存储过程时,如何在调用 SaveChanges() 后获取实体的标识 的相关文章

随机推荐

  • 卷积神经网络 - 如何获取特征图?

    I read a few books and articles about Convolutional neural network it seems I understand the concept but I don t know ho
  • href 内有小胡子

    我有这样的 JSON something http something com 和 HTML 像这样 a href something something a 当我应用 Mustache 时 我得到 a href 7B 7Bsomethin
  • 如何从批处理文件中仅删除空目录

    有没有办法从批处理文件中删除给定目录下的所有空子目录 或者是否可以递归复制目录 但排除任何空目录 你确实有两个问题 1 有没有办法从批处理文件中删除给定目录下的所有空子目录 是的 这个一行 DOS 批处理文件对我有用 您可以传入模式 roo
  • 多线 lambda 比较器

    我从 Java 中的 lambda 表达式开始 有一些我认为很奇怪的东西 我确信我做错了什么或者它有解决方法 要定义比较器 我可以这样做 col setComparator CustomCell o1 CustomCell o2 gt Co
  • 我们最终可以在企业软件中转向 DVCS 吗? SVN 仍然是开发的“必备”吗? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 零大小 malloc [重复]

    这个问题在这里已经有答案了 非常简单的问题 我编写了以下程序 include
  • 实时查询/聚合数百万条记录 - hadoop?数据库?卡桑德拉?

    我有一个可以并行化的解决方案 但我 还 没有 hadoop nosql 的经验 并且我不确定哪种解决方案最适合我的需求 理论上 如果我有无限的 CPU 我的结果应该立即返回 因此 任何帮助将不胜感激 谢谢 这是我所拥有的 数千个数据集 da
  • 如何处理不停止线程的行为不良的库

    处理在库关闭时无法正确清理线程的第三方库时 有哪些解决方法 许多库显式或隐式地公开其中包含的代码的生命周期方法 例如 Web 应用程序框架存在于 Servlet 容器中的 Web 应用程序上下文中 创建上下文时 框架可能会出于各种原因启动一
  • 使用正则表达式检查字符串是否以辅音开头

    有没有更好的方法在 Ruby 中编写以下正则表达式 第一个正则表达式匹配以 小写 辅音开头的字符串 第二个正则表达式以元音开头 我试图弄清楚是否有一种方法可以编写与第二个表达式的负数匹配的正则表达式 而不是编写具有多个范围的第一个表达式 s
  • 有没有办法检测我是否将鼠标悬停在文本上?

    我真正想要的是检测光标何时更改为 文本 类型 即何时将鼠标悬停在一段文本上 我尝试查看我悬停的元素类型 但这不太准确 因为我不知道它们实际包含什么 据我所知 只有我之前指定了 CSS 光标属性 才可以检测到该属性 这有可能吗 你会怎样做呢
  • 简单的 Java 2d 数组迷宫示例

    我正在工作或了解如何创建一个简单的java 二维迷宫应该是这样的 int maze 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 0 1 0 1 0 0 0 0 0 1 1 0 1 0 0 0 1 0 1 1 1 0 1
  • 更改php版本后php网站无法运行

    我在 Ubuntu 13 04 环境中使用 php 我已经配置了 apache 以便在我的主目录中有一个public html我保存我正在处理的所有网站的目录 我可以通过以下方式访问它们localhost homedir website 以
  • 如何使CSS边框图像工作

    我的网站上有边框 我想在垂直菜单的顶部放置一个图像 在底部放置一个图像 在中间放置一个背景 但这不起作用 这是我的代码 border image border solid transparent 10px I tried with and
  • 如何在PowerShell中将环境变量打印到控制台?

    我开始使用 PowerShell 并试图弄清楚如何echo将系统环境变量发送到控制台来读取它 以下两者均不起作用 第一个只是打印 PATH 第二个不打印任何内容 echo PATH echo PATH 变量名前缀为env env path
  • 在 MacOS 上将 Vapor 编译为独立应用程序

    我想用我的代码将 Vapor 编译为 MacOS 应用程序 以便我可以将其放置在内部服务器上 拖动并单击以启动它 我不想在服务器上安装 Xcode swift 和其他开发文件 我是 Vapor 和 Swift 的新手 当我从 xCode 构
  • 多列上的 DISTINCT

    I have SELECT DISTINCT first second third FROM table 我不仅希望第一个是 DISTINCT 第二个是 DISTINCT 而且还希望第三个保持不 DISTINCT 我这样尝试过 SELECT
  • 使用 DataTrigger 的 .NET Maui 样式

    概述 我有两个属性 IsPast IsCurrentMonth 如果已经过去或者not当月我想用红色显示标签 以下代码是默认 Maui 应用程序的缩小版本 如果你运行它 你会得到红色标签 预期 单击一次后 它会保持红色 预期 但单击后会打开
  • 如何告诉 forfiles 执行 PATH 中的命令?

    我在以下 Windows Server 2k3 批处理命令中遗漏了一些有关转义字符串或空格的内容 明显 FORFILES m wsp c CMD C C Program Files Common Files Microsoft Shared
  • 禁用 cookie 的 PHP 会话是否有效?

    今天我参加了 Skype 面试 面试的是 PHP 开发人员的工作 其中一个问题是关于 Cookie 和 PHP 会话 问题是 如果用户浏览器中禁用了 Cookie PHP 会话是否可以设置 读取 使用 我告诉他们不是 因为默认情况下 PHP
  • 当实体映射到存储过程时,如何在调用 SaveChanges() 后获取实体的标识

    我们使用实体框架 4 0 并且有一个映射到 DBA 提供的存储过程的实体 映射详细信息中的插入 更新和删除函数都有自己的存储过程 当使用映射到表的实体时 我可以添加新实体 调用dataContext SaveChanges 然后我实例化的新