EF导航属性会自动从已查出来的对象附加

Posted cyril-hcj

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了EF导航属性会自动从已查出来的对象附加相关的知识,希望对你有一定的参考价值。

如果新增对象导航属性对应的Id有值,其相应的导航属性会自动在内存中查找,如果存在会自动附加上去。

public virtual void UpdateMaterialPurchaseOrderItem(
            ChangeDtos<MaterialPurchaseOrderItemDetailInputDto> itemDetail, Guid billId)
        {
            Ensure.NotNull(itemDetail, nameof(itemDetail));
            var materialPurchaseOrder = GetEntityById(billId);
            _materialPurchaseOrderItemInputUnitService.SaveChangeDtos(itemDetail, materialPurchaseOrder.OrderItemDetail);
            materialPurchaseOrder.OrderItemDetail.Where(a => a.Material == null).ForEach(a =>
                {
                    a.Material = _materialRepository.First(a.MaterialId);
                });
            RepositoryContext.Commit();
        }

 SaveChangeDtos封装了新增修改删除的方法在里面。

如果非新增数据中OrderItemDetail.MaterialId与新增数据中的MaterialId相同,则EF会自动将Material赋值。

给a.Material赋值的循环,只有当OrderItemDetail集合中(非新增数据)不存在对应的MaterialId时才会进入循环

以上是关于EF导航属性会自动从已查出来的对象附加的主要内容,如果未能解决你的问题,请参考以下文章

无法使用自动映射器映射内部导航属性。 EF 核心

EF 6 代码首先,在导航属性上使用包含更改外键 ID 会导致“发生引用完整性约束违规”错误

EF5.X Code First表关联与延迟加载

EF:“包含”导航属性,当使用“选择”投影创建包装对象时

如何通过WCF SOAP服务访问EF导航属性?

MVC初体验-EF系列(总结)(23)