子实体使用efcore.bulkeextensions的BulkInsert



我编写了以下代码来插入记录产品基本信息和属性:

foreach (var item in records)
{
var productList = new ProductsList()
{
CreatedDate = DateTime.Now,
ItemGroup = item.ItemGroup,
ItemType = item.itemType,
LegalEntitiesId = legalEntityId,
PostedToOtherSys = false,
ProductName = item.prodName,
ProductNumber = item.prodid,
UOM = item.UOM,
};
foreach (var attribute in item.attributes)
{
var productListAttributeValues = new ProductListAttributeValues()
{
CreatedDate = DateTime.Now,
Name = attribute.Name,
Value = attribute.type
};
productList.ProductListAttributeValues.Add(productListAttributeValues);
}
_unitOfWork.productsListRepository.Add(productList);
_unitOfWork.Save();
}
}

我正在使用efcore.bulkextensions库,但当基于文档存在外键关系时,我没有了解如何插入基实体和子实体:

文件

我尝试了以下方法:

_unitOfWork.productsListRepository.BulkAdd(listOfProducts);

foreach (var entity in listOfProducts)
{
foreach (var subEntity in entity.ProductListAttributeValues)
{
subEntity.ProductsListId = entity.Id; // setting FK to match its linked PK that was generated in DB
listOfProductsAttributes.Add(subEntity);
}
_unitOfWork.productListAttributeValuesRepository.AddRange(entity.ProductListAttributeValues.ToList());
}
_unitOfWork.productListAttributeValuesRepository.BulkAdd(listOfProductsAttributes);

您必须将BulkConfig选项添加到您的底层dbContext.BulkInsert调用中,如下所示:

_context.BulkInsert(, new BulkConfig { IncludeGraph = true });

最新更新