簡體   English   中英

錯誤System.Nullable'1自動映射器

[英]Error System.Nullable'1 automapper

我有實體類pinjaman_DataEntities ,它具有4個屬性。

public string appl_no { get; set; }

public string reff_number { get; set; }

public string cust_name { get; set; }

public string merchant_id { get; set; }

我有一個數據庫上下文gt_applikasi_pinjaman ,它具有比pinjaman_DataEntities更多的屬性,但仍然具有上述4個屬性的名稱。

我想從pinjaman_DataEntities映射到gt_appllikasi_pinjaman

和下面的代碼:

public bool updateFilter(pinjaman_DataEntities filterPinjaman)
{    
    bool valid = true;    
    filterPinjaman = (pinjaman_DataEntities)ConvertDataEmpetyStringToNull(filterPinjaman);    
    gt_applikasi_pinjaman pinjaman = dbContext.gt_applikasi_pinjaman.Find(filterPinjaman.appl_no); 

    Mapper.CreateMap<pinjaman_DataEntities, gt_applikasi_pinjaman>()
         .ForAllMembers(opt => opt.Condition(srs => !srs.IsSourceValueNull));

    Mapper.Map(filterPinjaman, pinjaman);    
    dbContext.Entry(pinjaman).State = EntityState.Modified;    
    dbContext.SaveChanges();    
    return valid;    
}

運行代碼后,打開代碼時出現錯誤

Mapper.Map(filterPinjaman, pinjaman);

錯誤消息是:

WebApplicationServiceAPIA.dll中發生類型'System.Exception'的異常,但未在用戶代碼中處理

附加信息:

映射類型:

pinjaman_DataEntities->可空`1

ServiceAPIA.DataEntities.pinjaman_DataEntities-> System.Nullable`1 [[System.DateTime,mscorlib,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089]]

目標路徑:gt_applikasi_pinjaman.appl_date.appl_date

源值:ServiceAPIA.DataEntities.pinjaman_DataEntities

這是什么意思,以及如何解決? 非常感謝。

我正在使用自動映射器6.2.2.0最新版本。 在此版本中,您需要使用null來跳過-

.ForAllMembers(opt => opt.Condition(src => src!= null))

檢查下面的代碼是否對您有用。

using System;
using AutoMapper;

public class Program
{
    public static void Main(string[] args)
    {
        var sVm = new SourceVM
        {
            cust_name = "Gaurav",
            appl_no = "HR99TEMP5253"
        };

        var r = MyConvert(sVm);
        Console.WriteLine(r.cust_name);
        Console.WriteLine(r.appl_no);
        Console.WriteLine(r.appl_date);


        r = MyConvert(null);
        Console.WriteLine(r.cust_name);
        Console.WriteLine(r.appl_no);
        Console.WriteLine(r.appl_date);

    }


    private static DestinationVM GetDest()
    {
        return new DestinationVM
        {
            cust_name = "Deepak",
            appl_no = "HR26DK6149",
            appl_date = DateTime.Now
        };
    }
    public static DestinationVM MyConvert(SourceVM vm)
    {            

        DestinationVM destVm = GetDest();

        var config = new MapperConfiguration(cfg =>
        {
            cfg.CreateMap<SourceVM, DestinationVM>()
            .ForAllMembers(opt => opt.Condition(src => src != null));
        });

        config.CreateMapper().Map(vm, destVm);

        return destVm;
    }
}


public class SourceVM
{
    public string appl_no { get; set; }

    public string reff_number { get; set; }

    public string cust_name { get; set; }

    public string merchant_id { get; set; }
}

public class DestinationVM
{
    public string appl_no { get; set; }

    public string reff_number { get; set; }

    public string cust_name { get; set; }

    public string merchant_id { get; set; }

    public Nullable<System.DateTime> appl_date { get; set; }
}

暫無
暫無

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

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