错误 System.Nullable'1 个自动映射器
Error System.Nullable'1 automapper
我有实体 class、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);
错误信息是:
An exception of type 'System.Exception' occurred in
WebApplicationServiceAPIA.dll but was not handled in user code
Additional information:
Mapping types:
pinjaman_DataEntities -> Nullable`1
ServiceAPIA.DataEntities.pinjaman_DataEntities ->
System.Nullable`1[[System.DateTime, mscorlib, Version=4.0.0.0,
Culture=neutral, PublicKeyToken=b77a5c561934e089]]
Destination path: gt_applikasi_pinjaman.appl_date.appl_date
Source value: ServiceAPIA.DataEntities.pinjaman_DataEntities
这是什么意思,如何解决?
非常感谢。
我正在使用 auto mapper 6.2.2.0 最新版本。并在此版本中跳过您需要使用的 null -
.ForAllMembers(opt => opt.Condition(src => src != null))
检查下面的代码是否适合你.. Fiddle
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; }
}
我有实体 class、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);
错误信息是:
An exception of type 'System.Exception' occurred in WebApplicationServiceAPIA.dll but was not handled in user code
Additional information:
Mapping types:
pinjaman_DataEntities -> Nullable`1
ServiceAPIA.DataEntities.pinjaman_DataEntities -> System.Nullable`1[[System.DateTime, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]]
Destination path: gt_applikasi_pinjaman.appl_date.appl_date
Source value: ServiceAPIA.DataEntities.pinjaman_DataEntities
这是什么意思,如何解决? 非常感谢。
我正在使用 auto mapper 6.2.2.0 最新版本。并在此版本中跳过您需要使用的 null -
.ForAllMembers(opt => opt.Condition(src => src != null))
检查下面的代码是否适合你.. Fiddle
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; }
}