投影 - 将两个属性映射为一个
Projection - mapping two properties into one
我正在尝试使用 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()
.
我该如何解决这个问题?
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); } }
}
我们已经设法通过创建一个假方法来解决这个问题,该方法 "calls" 我们数据库中的一个函数,因为这个函数被 LINQ to Entities 调用。
我正在尝试使用 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()
.
我该如何解决这个问题?
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); } }
}
我们已经设法通过创建一个假方法来解决这个问题,该方法 "calls" 我们数据库中的一个函数,因为这个函数被 LINQ to Entities 调用。