使用 ObjectContext 获取关系记录的主键

     2023-03-27     129

关键词:

【中文标题】使用 ObjectContext 获取关系记录的主键【英文标题】:Get primary key of relationship record with ObjectContext 【发布时间】:2016-03-21 13:08:56 【问题描述】:

我尝试使用 EF 的 ChangeTracker 进行审核并保存数据库中的所有更改(添加 + 更新)。

所以使用ChangeTracker 我将能够获取所有更改的表,以及每个表的所有值。但是我还需要新表中新记录的ID。

其中一些是关系,当我尝试用EntityKey获取值时,主键是0

private object GetPrimaryKeyValue(DbEntityEntry entry)

    var objectStateEntry = ((IObjectContextAdapter)this).ObjectContext.ObjectStateManager.GetObjectStateEntry(entry.Entity);
    return objectStateEntry.EntityKey.EntityKeyValues[0].Value;    

有人知道,如果我走错路了,是否有可能获得相关实体的主键?

谢谢!

【问题讨论】:

我认为您需要检查您的数据库表。如果是主键,则不能为空(见***.com/questions/3876785/…)。 其实我说错了,不是null而是0。主键是表中自增字段。 【参考方案1】:

我认为您会得到 0(即默认值(int)),因为自动增量(身份)列仅在保存完成后才会填充(即 dbContext.SaveChanges 已成功完成)。尝试读取SaveChanges() 之后的值,就像建议的here 一样。

这看起来像是一种捕获新添加值的方法,您必须重写 SaveChanges 并自己获取生成的值,就像提到的 here。

【讨论】:

是的,但我想做的是将所有新添加的值保存到另一个表中,因为我使用 EF 的 ChangeTracker 检索所有这些值。当涉及到现有数据的更新时,这不是问题,但在这种情况下,它是针对新行的,主键是 0 我在回答中添加了额外的参考。 请注意:由于我不喜欢触发器,我更喜欢 .NET 解决方案。但是,请记住,如果表数据可以由其他应用程序而不是您自己的应用程序更改,则触发器可能更合适。 好的,Alexei,您的建议和参考对我没有帮助,因为我得到了相同的结果,主键为 0。如果我在调用SaveChanges() 后进行审核,我会丢失EntityState 值(在这种情况下添加)但如果检查状态Unchanged 我新添加的对象包含所有值,因此带有 ID。您认为在为新添加的对象调用SaveChanges() 后使用未更改的状态是否正确?

使用魔法记录从核心数据中获取关系实体

】使用魔法记录从核心数据中获取关系实体【英文标题】:Fetchrelationalentityfromcoredatausingmagicalrecord【发布时间】:2015-06-2516:06:15【问题描述】:我正在维护一个已经使用魔法记录(https://github.com/magicalpanda/MagicalRecord/wiki)作为核心... 查看详情

使用关系表从数据库中获取记录时出现问题

】使用关系表从数据库中获取记录时出现问题【英文标题】:Problemwhengettingrecordsfromdatabasewithrelationshiptable【发布时间】:2020-05-1503:28:45【问题描述】:我无法使用中间表将照片与标签关联起来。在下面的示例中,如何在Laravel中... 查看详情

使用分页从两个关系(一个是通过访问器)获取记录

】使用分页从两个关系(一个是通过访问器)获取记录【英文标题】:Getrecordsfromtworelations(oneispassthroughaccessor)withpaginate【发布时间】:2020-12-0604:50:31【问题描述】:Laravel7.x我需要从两个relations获取帖子。看:用户有帖子;用户... 查看详情

coredata 获取关系不存在的记录

...。现在我想选择那些与其他实体没有关系的记录。我尝试使用谓词(格式:“relation=%@”,nill),但这不起作用。如何在没有填充关系的情况下获取记录?【问题讨论】:tocheckanc 查看详情

通过 id 获取记录并使用 Laravel 和 eloquent 查询与“中间”的关系

】通过id获取记录并使用Laravel和eloquent查询与“中间”的关系【英文标题】:gettingrecordsbyidandqueryingthererelationwith\'wherebetween\'usingLaravelandeloquent【发布时间】:2021-08-1722:44:40【问题描述】:我正在尝试从某个记录器在某个时间跨度... 查看详情

获取mybaties插入记录自动增长的主键值

   首先在MybatisMapper文件中insert语句中添加属性“useGeneratedKeys”和“keyProperty”,其中keyProperty是保存主键值的属性。  例如:    <insertid="save"parameterType=“Survery"useGeneratedKeys="true"keyProperty="pkId">      in 查看详情

使用 jdbctemplate / jdbc for Hana db 获取序列生成的主键

】使用jdbctemplate/jdbcforHanadb获取序列生成的主键【英文标题】:Fetchprimarykeygeneratedbysequenceusingjdbctemplate/jdbcforHanadb【发布时间】:2017-04-0705:53:26【问题描述】:我们正在尝试在hanadb中插入记录,因此我们目前正在使用jdbc模板和密... 查看详情

Laravel Eloquent:获取包含两个特定关系的记录

...话。我现在需要获取两个特定用户参与的对话。我尝试了使用wher 查看详情

从关系中获取数据表的一条记录

...atable【发布时间】:2021-12-2104:17:11【问题描述】:我正在使用Laravelv8我有3个模型:Family、FamilyMember、FamilyRelationship家庭表:idaddresscreated_atupdated_at1testNULLNULL家庭关系表:idnamecreated 查看详情

关于:无法定义这两个对象之间的关系,因为它们附加到不同的objectcontext对象。个人解决方案

1publicclassUserClazz2{3publicUserUser{get;set;}4publicIList<Product>ProductList{get;set;}5}67publicclassUser8{9publicIList<Product>ProductList{get;set;}10publicIList<UserClazz>UserC 查看详情

Laravel - 以一对多关系获取最后一条记录

...onship【发布时间】:2018-06-2607:44:39【问题描述】:我正在使用5.5版的Laravel,我有一对多的关系。在第一个表(乘客)中,我有乘客登记表Passengersid|name1|Carlos2|Pedro在第二张表中,我有这些乘客的进出历史记录历史 查看详情

RestKit 使用指定的主键引用在默认关系中映射对象

】RestKit使用指定的主键引用在默认关系中映射对象【英文标题】:RestKitMappingobjectswithinadefaultrelationshipusingaspecifiedprimarykeyreference【发布时间】:2012-07-1314:48:46【问题描述】:我目前正在开发一个iOSMessenger应用程序,我想谈谈这... 查看详情

sqlserver外键关系有啥用?

最好能举个例子说一下。。还有内连接,外连接什么的。。讲的通俗一点。。谢谢了。。参考技术A  SQL的主键和外键的作用:  外键取值规则:空值或参照的主键值。  (1)插入非空值时,如果主键表中没有这个值,则不... 查看详情

使用两个表的主键的外键关系

】使用两个表的主键的外键关系【英文标题】:ForeignKeyrelationshipusingPrimaryKeyofbothtables【发布时间】:2017-07-0511:23:08【问题描述】:我们系统的所有用户都派生自一个主“用户”类。同样,我们希望以同样的方式构建我们的数据... 查看详情

数据库中的主键与外键的关系

文章目录一、主键、外键:1.概念2.区别3.作用4.举例:5.总结一、主键、外键:1.概念SQL的主键表示唯一标识一条记录,不能有重复的,不允许为空。例如:一条记录包括身份正号,姓名,年龄。身... 查看详情

javaweb_jdbc_jdbc获取数据库自动生成的主键值

...成主键值,那么我们就有必要获取这一个主键值。2.实现:使用重载的prepareStatement(sql,flag)来生成PreparedStatement对象,并调用ResultSetrs=prepared 查看详情

向下转换 ObjectContext 到实体集合

】向下转换ObjectContext到实体集合【英文标题】:DowncastObjectContexttoEntitiescollection【发布时间】:2013-08-0718:40:00【问题描述】:我在EF4.0中使用数据库优先方法创建了一个实体模型。我希望能够在没有app.config文件的情况下使用我的... 查看详情

如何从具有父子关系的模型中获取下一个和上一个记录

...子部分。所以在我的模型中,我将表格加入到自身中,并使用parent列我可以确定哪个部分是父/子。我的问题是如何检索小节的下一个和上 查看详情