使用实体框架保存大型实体和子实体

用户3738893

我需要更新一个有两个孩子的实体,这个实体也有两个孩子都依赖于父母双方。

                            Job(PK: Jobid)
       Holes(PK: Holeid, FK: Jobid) / Orders(PK: Orderid, FK: Jobid)
Tools(PK: Toolid, FK: Holeid, FK: Orderid) / ToolHoles(PK: Holeid, Orderid)

工具还具有7个从其继承的子级。

该作业在保存时将已经存在。该工作可能包含或可能不包含每个子实体中的一个或多个。

我需要能够将所有这些信息保存在一个事务中,以便不将部分信息保存到数据库中。

我当前的尝试是使用所有相关信息构建Job实体,然后调用SaveChanges。如果要添加新实体,则必须在保存时为除Jobid之外的所有对象生成密钥。我正在努力实现的目标有可能吗?

迈克·H

在这里做一些假设,让我知道我是否不满意。如果您的情况如下所示,则应该可以。

var myHoles = new Holes();
var myOrders = new Orders();
var myTools = new Tools();
var myToolHoles = new ToolHoles();

myJob.Holes.Add(myHoles);  //myJob already exists
myJob.Orders.Add(myOrders);

myHoles.Tools.Add(myTools);
myOrders.Tools.Add(myTools);

myHoles.ToolHoles.Add(myToolHoles);
myOrders.ToolHoles.Add(myToolHoles);

db.SaveChanges();

您说的是“一笔交易”,但实际情况是发生了几笔交易。

  • myHoles并将适当地myOrders将其插入数据库中JobId
  • EF将找出他们的ID
  • myTools并将与myToolHoles一起插入,HoleIdOrderId使用在第二步中找到的值进行设置。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用实体框架保存大型实体和子实体

来自分类Dev

实体框架保存了太多子实体

来自分类Dev

用子实体保存实体

来自分类Dev

休眠:保存子实体

来自分类Dev

使用Moq,NUnit和实体框架重新加载保存的实体

来自分类Dev

使用Moq,NUnit和实体框架重新加载保存的实体

来自分类Dev

实体框架ApplicationUser子实体返回null

来自分类Dev

实体框架LINQ包含-子实体

来自分类Dev

实体框架添加所有子实体

来自分类Dev

实体框架未正确加载子实体

来自分类Dev

实体框架查询以包括实体集合的子实体

来自分类Dev

实体框架保存更改

来自分类Dev

无法急于加载实体框架子实体

来自分类Dev

实体框架6-如何添加子实体?

来自分类Dev

如何从子实体数据获取父实体框架核心?

来自分类Dev

实体框架6错误-ICollection不包含子实体的定义

来自分类Dev

实体框架无需询问即可填充子实体

来自分类Dev

在实体框架6中删除子实体时出错

来自分类Dev

实体框架子实体的唯一属性

来自分类Dev

使用实体框架保存AutoMapper映射的实体集合

来自分类Dev

保存父实体时,不会保存新的子实体

来自分类Dev

通过实体框架保存显式实体

来自分类Dev

使用linq和相关实体查询实体框架7

来自分类Dev

实体框架和指导

来自分类Dev

实体框架和视图

来自分类Dev

Filehelpers和实体框架

来自分类Dev

实体框架和指导

来自分类Dev

实体框架和IEnumerable

来自分类Dev

使用实体框架保存推文