我需要更新一个有两个孩子的实体,这个实体也有两个孩子都依赖于父母双方。
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之外的所有对象生成密钥。我正在努力实现的目标有可能吗?
在这里做一些假设,让我知道我是否不满意。如果您的情况如下所示,则应该可以。
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
。myTools
并将与myToolHoles
一起插入,HoleId
并OrderId
使用在第二步中找到的值进行设置。本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句