Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net core 在aspnet core&ef core中使用automapper.collection不会更新集合中已编辑的记录_Asp.net Core_Collections_Entity Framework Core_Automapper_Aspnetboilerplate - Fatal编程技术网

Asp.net core 在aspnet core&ef core中使用automapper.collection不会更新集合中已编辑的记录

Asp.net core 在aspnet core&ef core中使用automapper.collection不会更新集合中已编辑的记录,asp.net-core,collections,entity-framework-core,automapper,aspnetboilerplate,Asp.net Core,Collections,Entity Framework Core,Automapper,Aspnetboilerplate,我使用的是asnet样板文件aspnet core和ef core。我已在预初始化中初始化automapper.collection,如下所示: Configuration.Modules.AbpAutoMapper().Configurators.Add( cfg =>{ cfg.AddCollectionMappers(); cfg.CreateMap<OrderDTO, Order>().EqualityComparison((od

我使用的是asnet样板文件aspnet core和ef core。我已在预初始化中初始化automapper.collection,如下所示:

Configuration.Modules.AbpAutoMapper().Configurators.Add(
    cfg =>{
        cfg.AddCollectionMappers();
        cfg.CreateMap<OrderDTO, Order>().EqualityComparison((odto, o) => odto.ID == o.ID);
        cfg.CreateMap<OrderItemDTO, OrderItem>().EqualityComparison((odto, o) => odto.ID == o.ID);
    }
);
以下是更新方法:

    public override async Task<OrderDto> Update(OrderDto input)
    {
        var ord = await _orderManager.GetA(input.Id);

        ObjectMapper.Map(input, ord);

        CheckErrors(await _orderManager.UpdateA(ord));

        return MapToEntityDto(await _orderManager.GetA(input.Id));
    }
尝试更新orderitem记录时,输入和ord变量的值如下所示:

    input   {OrderDto}  
    Code    "1" string
    Id  1   int
    Items   Count = 1   System.Collections.Generic.ICollection<OrderItemDto>
    -       [0] {OrderItemDto}  
                Id  1   int
                OrderId 1   int
        +       Product {ProductLoadDto}
                ProductId   4   int
                Quantity    22  double
    MovementDate    {28-Jul-18 2:36:41 AM}  System.DateTime


    ord {[Order 1]} Order
    Code    "1" string
    Id  1   int
    Items   Count = 1   System.Collections.Generic.ICollection<OrderItem>
    -       [0] {OrderItem 1}
            Id  1   int
            OrderId 1   int
    +       Product {[Product 4]}   Venues.Products.Product
            ProductId   4   int
            Quantity    1   double
    MovementDate    {28-Jul-18 12:06:41 PM} System.DateTime

要让automapper.collection自动处理集合编辑,我缺少什么吗?

您尝试过Entity Framework Core repo吗

https://github.com/AutoMapper/AutoMapper.Collection.EFCore/tree/development

我使用此处列出的扩展来解决此问题:

显示您的订单保存方法以及OrderDto和OrderItemDto的内容。我已将这些详细信息添加到原始帖子中。伙计们,我仍然面临这个问题。我可以在从dto映射新值后验证它是否在实体中,因此我假设此时automapper.collection包会将其标记为已修改。但是没有针对订单项向sql发出update语句,如何/在何处检查这些子实体的changestate状态?对于从dto到它的映射,我还需要做些什么吗?确认实体已更改,因此对其进行更新?更正,似乎集合中的更新或删除条目都不适用于DB。谢谢郭,不,我没有尝试过该回购。但是我在安装时遇到一个错误:安装包:找不到包'AutoMapper.Collection.EntityFrameworkCore'我正在使用安装包AutoMapper.Collection.EntityFrameworkCore进行安装,包是否使用其他名称?我还尝试了以下操作,但没有成功:安装包AutoMapper.Collection.EFCoretry AutoMapper.Collection 4.0。0@DLedge你找到答案了吗?如果你有邮件的话,你介意发吗。谢谢
https://github.com/AutoMapper/AutoMapper.Collection.EFCore/tree/development