簡體   English   中英

Automapper 創建目標類型 object,其中沒有任何值

[英]Automapper create destination type object with no values inside

我遇到了這個問題中提到的類似問題AutoMapper setting destination object to null

我的映射器正在創建一個空的 object 目標類型,盡管我可以在調試器中看到我的源 object 中的值。

我的source object是submitOrder類型的grpc消息

syntax = "proto3";

option csharp_namespace = "SubmitOrderService";

package tracksubmitorder;

import "google/protobuf/empty.proto";
import "google/protobuf/timestamp.proto";

service SubmitOrderService {

  rpc SubmitOrder(submitOrder) returns (google.protobuf.Empty);
}

// The request message containing the user's name.
message submitOrder {
  int64 orderID= 1;
  int32 beef =2;
  int32 chicken =3;
  int32 tofu =4;
  int32 shrimp =5;
  google.protobuf.Timestamp createdOn = 20;
  string comment=30;
}

我的目的地是數據 model

namespace SubmitOrderService.Models
{
    public class Submit_Order
    {
        public long Id { get; set; }
        public string Comments { get; set; }
        public DateTime CreatedAt { get; set; }
        public int CountBeef { get; set; }

        public int  CountChicken { get; set; }
        public int CountTofu { get; set; }
        public int CountShrimp { get; set; }        
    }
}

這是我的配置文件

using AutoMapper;
using SubmitOrderService.Models;

namespace SubmitOrderService
{
    public class SubmitOrderProfile: Profile
    {
        public SubmitOrderProfile()
        {
            CreateMap<submitOrder, Submit_Order>().ForMember(
                    dest => dest.Comments,
                    opt => opt.MapFrom(src => $"{src.Comment}")
                ).ForMember(
                    dest => dest.CreatedAt,
                    opt => opt.MapFrom(src => $"{src.CreatedOn }")
                )
                .ForMember(
                    dest => dest.CountChicken ,
                    opt => opt.MapFrom(src => $"{src.Chicken}")
                )
                .ForMember(
                    dest => dest.CountBeef ,
                    opt => opt.MapFrom(src => $"{src.Beef}")
                )
                .ForMember(
                    dest => dest.CountShrimp ,
                    opt => opt.MapFrom(src => $"{src.Shrimp}")
                )
                .ForMember(
                    dest => dest.CountTofu ,
                    opt => opt.MapFrom(src => $"{src.Tofu}")
                ).ReverseMap();

        }
    }
}

這是我的映射行,其中 reqOrder 是 submitOrder 類型

var order1 = _mapper.Map<Submit_Order>(reqOrder);

附言。 這是我第一次嘗試 Automapper,因此我們將不勝感激。

解決了問題。 我必須為我的CreatedAt成員顯式地將google.protobuf.Timestamp轉換為DateTime 像這樣,

ForMember( dest => dest.CreatedAt, opt => opt.MapFrom(src => src.CreatedOn.ToDateTime()) ) 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM