我尝试使用Automapper 3.3.0
创建投影映射,将我的实体中的两个属性映射到DTO中的一个属性。
例如:
public class Entity
{
public DateTime StartDate { get; set; }
public DateTime StartTime { get; set; }
}
public class DTO
{
public DateTime Start { get; set; }
}
所以我创建了一个像这样的投影:
Mapper.CreateMap<Entity, DTO>()
.ForMember(
d => d.Start, map => map.MapFrom(e => e.StartDate.Add(e.StartTime.TimeOfDay))
)
问题是,这个对我们的MSSQL数据库创建了一个查询,该数据库抛出NotSupportedException
,表示LINQ to Entities不知道方法DateTime.Add()
。
如何解决此问题?
答案 0 :(得分:0)
EF不知道如何处理这个,所以我会在目的地类型上创建一个属性来进行计算:
public class Entity
{
public DateTime StartDate { get; set; }
public DateTime StartTime { get; set; }
}
public class DTO
{
public DateTime StartDate { get; set; }
public DateTime StartTime { get; set; }
public DateTime Start { get { return StartDate.Add(StartTime.TimeOfDay); } }
}
答案 1 :(得分:0)
我们设法通过创建一个“调用”我们数据库中的函数的假方法来解决这个问题,因为LINQ to Entities调用了这个函数。