使用 EntityFramework 4 为实体分配 id

2023-12-19

我想为我的实体实现“默认”ID 生成支持。

保存实体时,我希望 EntityFramework 仅生成实体的 id 值(如果尚未设置)。如果 ID 已经具有非空、非零值,我希望在将实体保存到数据库中时保留该实体 ID。

我正在将数据从旧数据模型(从旧数据库创建的 EntityFramework 模型)迁移到新创建的(模型优先)EntityFramework 模型。我们将旧型号称为 A,将新型号称为 T。

通常,我希望 T 实体在保存时设置其 Id(它们都是 int64),以便长期使用新模型。

目前,我根据要从中迁移的相应 A 实体的 Id 显式分配 T 实体 Id。这样迁移结果就很容易检查。

但是,尽管我可以在迁移例程中将 T 实体的 id 分配给与 A 实体相同的 id,但在保存实体后,Id 值已更改。

有没有办法覆盖 T 模型中所有实体的默认保存方法,以便仅在保存之前尚未在实体中设置 id 值时才分配它?

我在这里查看了其他一些 EntityFramework/Id 问题,但在我看来,他们都没有问同样的事情。

感谢您提供任何线索。


我看到您提到您正在使用模型优先。不过,我有一个 Code First 示例,可能会有所帮助。

在 T 实体上,id 属性上有一个 [Key] 属性,不是吗?如果是这样,您可以使用另一个属性,数据库生成的属性 http://msdn.microsoft.com/en-us/library/system.componentmodel.dataannotations.databasegeneratedattribute%28v=vs.103%29.aspx,强制设置身份。

public class SomeEntity
{
    [Key]
    [DatabaseGenerated(DatabaseGeneratedOption.None)]
    public int? SomeEntityID { get; set; }
}

此外,还有一个 Fluent API 调用可以实现类似的结果:

public class YourContext : DbContext
{
    protected override void OnModelCreating( DbModelBuilder dbModelBuilder )
    {
        base.OnModelCreating( dbModelBuilder );

        var config = dbModelBuilder.Entity<SomeEntity>();
        config.Property(e => e.SomeEntityID).HasDatabaseGeneratedOption( DatabaseGeneratedOption.None);
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 EntityFramework 4 为实体分配 id 的相关文章

  • 使用 gcc 在 Linux 上运行线程构建块 (Intel TBB)

    我正在尝试为线程构建块构建一些测试 不幸的是 我无法配置 tbb 库 链接器找不到库 tbb 我尝试在 bin 目录中运行脚本 但这没有帮助 我什至尝试将库文件移动到 usr local lib 但这又失败了 任何的意见都将会有帮助 确定您
  • 如何将 std::string& 转换为 C# 引用字符串

    我正在尝试将 C 函数转换为std string参考C 我的 API 如下所示 void GetStringDemo std string str 理想情况下 我希望在 C 中看到类似的东西 void GetStringDemoWrap r
  • std::list 线程push_back、front、pop_front

    std list 线程安全吗 我假设不是这样 所以我添加了自己的同步机制 我认为我有正确的术语 但我仍然遇到问题 每个函数都由单独的线程调用 Thread1 不能等待 它必须尽可能快 std list
  • C++11 删除重写方法

    Preface 这是一个关于最佳实践的问题 涉及 C 11 中引入的删除运算符的新含义 当应用于覆盖继承父类的虚拟方法的子类时 背景 根据标准 引用的第一个用例是明确禁止调用某些类型的函数 否则转换将是隐式的 例如最新版本第 8 4 3 节
  • 如何使从 C# 调用的 C(P/invoke)代码“线程安全”

    我有一些简单的 C 代码 它使用单个全局变量 显然这不是线程安全的 所以当我使用 P invoke 从 C 中的多个线程调用它时 事情就搞砸了 如何为每个线程单独导入此函数 或使其线程安全 我尝试声明变量 declspec thread 但
  • WPF 数据绑定到复合类模式?

    我是第一次尝试 WPF 并且正在努力解决如何将控件绑定到使用其他对象的组合构建的类 例如 如果我有一个由两个单独的类组成的类 Comp 为了清楚起见 请注意省略的各种元素 class One int first int second cla
  • 两个静态变量同名(两个不同的文件),并在任何其他文件中 extern 其中一个

    在一个文件中将变量声明为 static 并在另一个文件中进行 extern 声明 我认为这会在链接时出现错误 因为 extern 变量不会在任何对象中看到 因为在其他文件中声明的变量带有限定符 static 但不知何故 链接器 瑞萨 没有显
  • 为什么这个字符串用AesCryptoServiceProvider第二次解密时不相等?

    我在 C VS2012 NET 4 5 中的文本加密和解密方面遇到问题 具体来说 当我加密并随后解密字符串时 输出与输入不同 然而 奇怪的是 如果我复制加密的输出并将其硬编码为字符串文字 解密就会起作用 以下代码示例说明了该问题 我究竟做错
  • x:将 ViewModel 方法绑定到 DataTemplate 内的事件

    我基本上问同样的问题这个人 https stackoverflow com questions 10752448 binding to viewmodels property from a template 但在较新的背景下x Bind V
  • 两个类可以使用 C++ 互相查看吗?

    所以我有一个 A 类 我想在其中调用一些 B 类函数 所以我包括 b h 但是 在 B 类中 我想调用 A 类函数 如果我包含 a h 它最终会陷入无限循环 对吗 我能做什么呢 仅将成员函数声明放在头文件 h 中 并将成员函数定义放在实现文
  • 为什么 isnormal() 说一个值是正常的,而实际上不是?

    include
  • 编译时展开 for 循环内的模板参数?

    维基百科 here http en wikipedia org wiki Template metaprogramming Compile time code optimization 给出了 for 循环的编译时展开 我想知道我们是否可以
  • 相当于Linux中的导入库

    在 Windows C 中 当您想要链接 DLL 时 您必须提供导入库 但是在 GNU 构建系统中 当您想要链接 so 文件 相当于 dll 时 您就不需要链接 为什么是这样 是否有等效的 Windows 导入库 注意 我不会谈论在 Win
  • 当文件流没有新数据时如何防止fgets阻塞

    我有一个popen 执行的函数tail f sometextfile 只要文件流中有数据显然我就可以通过fgets 现在 如果没有新数据来自尾部 fgets 挂起 我试过ferror and feof 无济于事 我怎样才能确定fgets 当
  • C++ 中的参考文献

    我偶尔会在 StackOverflow 上看到代码 询问一些涉及函数的重载歧义 例如 void foo int param 我的问题是 为什么会出现这种情况 或者更确切地说 你什么时候会有 对参考的参考 这与普通的旧参考有何不同 我从未在现
  • DotNetZip:如何提取文件,但忽略zip文件中的路径?

    尝试将文件提取到给定文件夹 忽略 zip 文件中的路径 但似乎没有办法 考虑到其中实现的所有其他好东西 这似乎是一个相当基本的要求 我缺少什么 代码是 using Ionic Zip ZipFile zf Ionic Zip ZipFile
  • 在OpenGL中,我可以在坐标(5, 5)处精确地绘制一个像素吗?

    我所说的 5 5 正是指第五行第五列 我发现使用屏幕坐标来绘制东西非常困难 OpenGL 中的所有坐标都是相对的 通常范围从 1 0 到 1 0 为什么阻止程序员使用屏幕坐标 窗口坐标如此严重 最简单的方法可能是通过以下方式设置投影以匹配渲
  • 类型或命名空间“MyNamespace”不存在等

    我有通常的类型或命名空间名称不存在错误 除了我引用了程序集 using 语句没有显示为不正确 并且我引用的类是公共的 事实上 我在不同的解决方案中引用并使用相同的程序集来执行相同的操作 并且效果很好 顺便说一句 这是VS2010 有人有什么
  • Mono 应用程序在非阻塞套接字发送时冻结

    我在 debian 9 上的 mono 下运行一个服务器应用程序 大约有 1000 2000 个客户端连接 并且应用程序经常冻结 CPU 使用率达到 100 我执行 kill QUIT pid 来获取线程堆栈转储 但它总是卡在这个位置
  • 现代编译器是否优化乘以 1 和 -1

    如果我写 template

随机推荐

  • 如何在 GitHub 上为每次提交使用 HTML 和 JavaScript (D3.js) 显示演示

    我正在开发使用 D3 js 来显示一些可视化的应用程序 如何在 GitHub 上显示 HTML 文件 使用 JS 的预览 我需要每个提交 历史 的演示 而不仅仅是最新版本 I generate static version of my ap
  • 如何防止 ReSharper 在解决方案中创建文件夹?

    ReSharper 6 创建类似的文件夹ReSharper projectname其中包含下面的文件和文件夹 这通常会给 MSDeploy 和源代码控制带来很多问题 我必须在各处添加忽略规则 防止这种情况发生的正确方法是什么 切换回 Vis
  • Backtrace 消音器不工作

    在我的 Rails 应用程序中 我设置了以下回溯消音器 正如 Michael Hartl 在他的 Rails 教程中所建议的那样 Rails backtrace cleaner add silencer line line rvm 但我仍然
  • 以编程方式激活 firebase 云函数中的重试

    我正在部署 firebase 云功能 以通过持续部署来监听我们的 firestore 中的更改 我只能想办法激活重试manually https firebase google com docs functions retries enab
  • 请求如何使用 TComplexMath 类的简单示例(包含源代码)

    我正在使用 Borland Delphi7 进行一些 Pascal 编程 我已经下载了一个相当基本 且免费 的复杂数学函数源代码库 但不幸的是它没有附带任何使用示例 由于我对 Pascal 中的类不是很熟悉 我想我只需要一个简单的例子来说明
  • jar 文件的 MacOS 可执行文件

    我有一个独立的 java 应用程序 将在 Macintosh 系统中使用 考虑到它的源代码可以反编译 我不想将该应用程序作为 jar 文件提供 因此 我的目的是将 jar 文件转换为某种可以在 MacOS 中运行的可执行文件 有什么办法可以
  • 如何在mysql中保存链接?

    我需要在mysql中保存一些链接 但有些链接较小 有些链接可能很大 我必须在 mysql 中使用什么字段 varchar TEXT ecc Varchar 是一个不错的选择 TEST适用于非常大的数据 并且存储在表外 欲了解更多信息 请阅读
  • bash 脚本中的通配符

    我有一个 bash 脚本来从 ftp 检索文件 现在 这些文件的文件名中有一部分是日期字符串 但也有未定义的数字 这些数字在每个文件上都会发生变化 我想根据日期下载文件 这是我的代码 我只需要使用通配符技巧 ftp 脚本就可以工作了 fil
  • 在本地运行一次计时器触发的 Azure 函数的最简单方法是什么?

    我有一些按计划运行的 C Azure 函数定时器触发器 https learn microsoft com en us azure azure functions functions bindings timer 我把它们设置成这样 在哪里
  • 将图像从 iPhone 上传到服务器文件夹

    我在网上找到了一些将图像从 iphone 上传到服务器文件夹的片段 它显示使用服务器端脚本 例如 在服务器端使用php
  • 如何在新的谷歌应用程序脚本界面上缩进代码?

    任何有关如何使用快捷方式在 google appscript 上缩进 打开自动缩进的指导将不胜感激 What I am using when indenting manually is Tab and Shift Tab on single
  • 如今,设置线程亲和性而不是将其留给操作系统的充分理由是什么?

    在这里搜索 线程亲和力 的答案 我看到很多人对此感兴趣 但除了可能获得稳定的 QueryPerformanceTimer 结果之外 没有什么理由 假设有一个现代操作系统和一个带有现代 4 6 核 CPU 的现代 2 4 插槽工作站 服务器类
  • ReflectionClass::getProperties() 是否也获取父级的属性?

    我正在尝试通过反射访问 更改类的父类的属性 如果我在子级上运行 ReflectionClass getProperties 它是否也会返回父级具有的任何属性 如果没有 是否有任何方法可以使用反射访问父属性 我做了这个快速测试 当您获取子类的
  • 获取隐式证据选择的运行时类型

    假设我有一组 String 转换器 作为 Type 类 import scala reflect runtime universe abstract class ToStringConverter T def convert value T
  • ClassNotFoundException 封送 EJB 参数

    我正在制作一个具有分布式架构的项目 但我在返回时遇到问题java util Collection到客户端应用程序 我正在托管 Bean 中调用 EJB 以引入持久实体的集合 我正在使用 Java 7 和 JBoss 7 1 1 Manage
  • 将域名指向运行XAMPP和wordpress的服务器ip

    我在 Windows 服务器上安装了 XAMPP 还安装了 Wordpress XAMPP 模块 我还购买了一个域名 将其指向我的服务器 IP 问题是 我希望当人们输入 mydomain com 时 mydomain com 显示在地址栏中
  • Spring Data Elasticsearch 父/子文档存储库/测试执行错误

    我为两个父 子相关文档创建了两个 Spring Data elasticsearch 存储库 您可以看到它们的文档类here https github com ltsallas spring data elastic test blob m
  • 是否可以在不终止会话的情况下终止oracle中的单个查询?

    我希望能够在 Oracle 10 2 0 4 中终止用户的查询 而不终止其整个会话 这将允许查询结束 但不会将该用户从会话中注销 以便他们可以继续进行其他查询 这有可能吗 或者终止会话的钝锤是结束查询执行的唯一方法吗 我发现了一个窍门 我不
  • AWS Cloudfront:凭证的范围应限定在有效区域

    通过 API 连接到 AWS CloudFront 时 无论我做什么 都会出现异常 Credential should be scoped to a valid region 相同的凭据适用于帐户有权执行的任何其他请求 例如 S3 该异常是
  • 使用 EntityFramework 4 为实体分配 id

    我想为我的实体实现 默认 ID 生成支持 保存实体时 我希望 EntityFramework 仅生成实体的 id 值 如果尚未设置 如果 ID 已经具有非空 非零值 我希望在将实体保存到数据库中时保留该实体 ID 我正在将数据从旧数据模型