实体框架可以通过一个SaveChanges()添加很多相关的实体?我正在将许多(20多个)父子数据集写入数据库,EF要求我保存每个集合之间的更改,否则它会抱怨无法找出主键。是否可以将数据刷新到SQLServer,以便EF可以从标识中获取主键并在写入所有更改结束时发送SaveChanges?foreach(varitemCountinitemCounts){varaddItemTracking=newItemTracking{availabilityStatusID=availabilityStatusId,itemBatchId=itemCount.ItemBatchId,locationID=locationId,serialNumber=serialNumber,trackingQuantityOnHand=itemCount.CycleQuantity};_context.ItemTrackings.Add(addItemTracking);_语境。保存更改();varaddInventoryTransaction=newInventoryTransaction{activityHistoryID=newInventoryTransaction.activityHistoryID,itemTrackingID=addItemTracking.ItemTrackingID,personID=newInventoryTransaction.personID,usageTransactionTypeId=newInventoryTransaction.usageTransactionTypeId,transactionDate=newInventoryTransaction.transactionDate,usageQuantity=usageMultiplier*itemCount.CycleQuantity};_context.InventoryTransactions.Add(addInventoryTransaction);_context.SaveChanges();我只想在大循环结束时执行一次SaveChanges。如果您对新创建的对象使用对象引用而不是ID,则无需每次都保存更改:varaddItemTracking=newItemTracking{...}_context.ItemTrackings.Add(addItemTracking);varaddInventoryTransaction=newInventoryTransaction{itemTracking=addItemTracking,...};_context.InventoryTransactions.Add(addInventoryTransaction);..._context.SaveChanges();因为都是新item而不是itemTrackingID=addItemTracking.ItemTrackingID,所以可以去addItemTracking.InventoryTransaction=addInventoryTransaction;(或任何相关的导航属性)并将_context.SaveChanges()完全拉出循环。当一切都是新的时,实体框架非常擅长插入对象图。保存包含新项和现有项的对象图时,设置关联ID总是更安全。怎么样:vartrackingItems=itemCounts.Select(i=>newItemTracking{availabilityStatusID=availabilityStatusId,itemBatchId=i.ItemBatchId,locationID=locationId,serialNumber=serialNumber,trackingQuantityOnHand=i.CycleQuantity.RantemTracking});添加_conge;_context.SaveChanges();varinventoryTransactions=trackingItems.Select(t=>newInventoryTransaction{activityHistoryID=newInventoryTransaction.activityHistoryID,itemTrackingID=t.ItemTrackingID,personID=newInventoryTransaction.personID,usageTransactionTypeId=newInventoryTransaction.usageTransactionTypeId,transactionDate=newInventoryTransaction.transactionDate,usageQuantity=usageMultiplierQuantityOntrackingt.});_context.InventoryTransactions.AddRange(inventoryTransactions);_context.SaveChanges();但是我已经很久没有用过EF了,上面的代码是用记事本写的,所以我不能保证上面的就是C#学习教程:实体框架可以通过一个SaveChanges()来添加很多相关的实体吗?分享的所有内容,如果对你有用,需要进一步了解C#学习教程,希望大家多多关注注——本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如有转载请注明出处:
