可以实体框架增添了许多相关的实体单的SaveChanges()? [英] Can Entity Framework add many related entities with single SaveChanges()?

查看:164
本文介绍了可以实体框架增添了许多相关的实体单的SaveChanges()?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我写很多(20+)父子数据集到数据库中,EF是要求我各一套,没有这一点,抱怨不能够计算出的主键之间的SaveChanges。可以将数据刷新到SQL Server,以便EF可以从身份获得主键回来了,在写的所有变化的端发送的SaveChanges?

I am writing many (20+) parent child datasets to the database, and EF is requiring me to savechanges between each set, without which it complains about not being able to figure out the primary key. Can the data be flushed to the SQL Server so that EF can get the primary keys back from the identities, with the SaveChanges being sent at the end of writing all of the changes?

foreach (var itemCount in itemCounts)
{
    var addItemTracking = new ItemTracking
    {
        availabilityStatusID = availabilityStatusId,
        itemBatchId = itemCount.ItemBatchId,
        locationID = locationId,
        serialNumber = serialNumber,
        trackingQuantityOnHand = itemCount.CycleQuantity
    };
    _context.ItemTrackings.Add(addItemTracking);
    _context.SaveChanges();
    var addInventoryTransaction = new InventoryTransaction
    {
        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只有一次

I would like to do my SaveChanges just once at the end of the big loop.

推荐答案

您不`吨需要,如果你使用对象refernces到新创建的对象的ID不能每次保存更改:

You don`t need to save changes every time if you use objects refernces to newly created objects not IDs:

var addItemTracking = new ItemTracking
{
    ...
}
_context.ItemTrackings.Add(addItemTracking);
var addInventoryTransaction = new InventoryTransaction
{
    itemTracking = addItemTracking,
    ...
};
_context.InventoryTransactions.Add(addInventoryTransaction);
...
_context.SaveChanges();

这篇关于可以实体框架增添了许多相关的实体单的SaveChanges()?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆