Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 如何使用AutoMapper映射集合中的第一项_.net_Entity Framework_Automapper - Fatal编程技术网

.net 如何使用AutoMapper映射集合中的第一项

.net 如何使用AutoMapper映射集合中的第一项,.net,entity-framework,automapper,.net,Entity Framework,Automapper,我有一个对象Foo gen'd和EF,它的导航属性Bar是一对多,但应该是一对一。不管怎样,当我查询一个Foo时,我也想从Bar集合中获取第一个也是唯一一个项目,并将它们映射到一个扁平化的Biz Dto,我该怎么做呢 var result = (from c in ctx.Foo where c.Bar.Any(cs => cs.LOGINNAME == username && cs.PASSWORD == pass

我有一个对象Foo gen'd和EF,它的导航属性Bar是一对多,但应该是一对一。不管怎样,当我查询一个Foo时,我也想从Bar集合中获取第一个也是唯一一个项目,并将它们映射到一个扁平化的Biz Dto,我该怎么做呢

        var result = (from c in ctx.Foo
                     where c.Bar.Any(cs => cs.LOGINNAME == username && cs.PASSWORD == password)
        select c).First();
然后在我的AutoMapper配置中,我会创建一个看起来像

        Mapper.CreateMap<Foo, Biz>()
            .ForMember(dest => dest.Id, opt => opt.MapFrom(src => src.CLIENTID))
            .ForMember(dest => dest.Name, opt => opt.MapFrom(src => src.Bar.FirstOrDefault???))
Mapper.CreateMap()
.ForMember(dest=>dest.Id,opt=>opt.MapFrom(src=>src.CLIENTID))
.FormMember(dest=>dest.Name,opt=>opt.MapFrom(src=>src.Bar.FirstOrDefault??)
谢谢,, 斯蒂芬给出:

public class Foo{
 public ICollection<Bar> Bars { get; set; }
}
其中
FooCollection是可查询的

使用FirstOrDefault,以便在没有相关条的情况下不会出现异常

我想应该这样做

HTH

映射集合时,请在
栏上使用
FirstOrDefault()

opt.MapFrom(src => src.Bar.FirstOrDefault())

用一个例子更新了我的问题。你创建的地图调用看起来是正确的。他们不是为你工作吗?@PatrickSteele你确定这是允许的吗?opt.MapFrom(src=>src.Bar.FirstOrDefault???)显然,您需要清理语法,但是是的,您可以在每个字段的基础上定义自定义映射:opt.MapFrom(s=>s.Bar.FirstOrDefault())@帕特里克·斯蒂尔你能回答这个问题吗?@SteohenPlatten s.Bar.FirstOrDefault()不起作用吗?
opt.MapFrom(src => src.Bar.FirstOrDefault())