繁体   English   中英

Automapper:如何使用EF映射对象(如果不为null)

[英]Automapper: How to Map an Object if Not Null Using EF

我是automapper的新手。 我正在尝试将对象映射到DTO。 该对象的locationId可为空。 如果locationId为null,则需要为DTO的“ LocationName”属性分配空字符串,或者使用EF从SQL中的表中选择locationName。 我该如何完成?

这些课程:

public class Foo
{
        public int id { get; set; } //not relevant, here for convention
        public int? LocationId { get; set; } 
}

public class FooDto
{
        public int id { get; set; } //not relevant, here for convention
        public string LocationName { get; set; }
}

我的尝试:

Mapper.CreateMap<Foo, FooDto>()
    .ForMember( dest => dest.locationName, options => options.ResolveUsing(src=> src.LocationId == null ? "" : src => db.Locations.SingleOrDefault(l => l.Id == src.LocationId).Name) )

我以这个为例,但是它没有使用EF,所以我不知道我在做什么错。 我从来没有得到MapFrom一个明确的答案VS无论是从各种来源,如ResolveUsing

我担心的是,我正在将一种属性类型映射到另一种属性类型并使用EF。 事实是,自动映射器不在乎。 此代码有效:

Mapper.CreateMap<Foo, FooDto>()
    .ForMember( dest => dest.locationName, opt => opt.ResolveUsing(src=> src.LocationId == null ? "" : db.Locations.SingleOrDefault(l => l.Id == src.LocationId).Name) )

当问题出在我的lambda表达中时,我想得太多了。 我两次通过了论点,因为我没有考虑它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM