自动映射器集合

4

我已经阅读了无数其他的帖子,但似乎无法弄清楚发生了什么,所以现在需要一些帮助。

我正在尝试映射我的领域实体,这些实体包含集合,到也包含集合的dto。

这里有一个简单的例子;(提前道歉,代码有点长,我尽量保持它尽可能短):

实体

public class Foo
{
    public Foo()
    {
        Bars = new List<Bar>();
    }
    public string Foo1 { get; set; }
    public ICollection<Bar> Bars { get; set; }
}
public class Bar
{
    public string Bar1 { get; set; }
}

Dtos

public class FooDto
{
    public FooDto()
    {
        Bars = new List<BarDto>();
    }
    public string Foo1 { get; set; }
    public IEnumerable<BarDto> Bars { get; set; }
}
public class BarDto
{
    public string Bar1 { get; set; }
}

地图

Mapper.CreateMap<Foo, FooDto>();
Mapper.CreateMap<ICollection<Bar>, IEnumerable<BarDto>>();

测试

// Arrange
var e = new Foo
{
    Foo1 = "FooValue1",
    Bars = new List<Bar>
    {
        new Bar
        {
             Bar1 = "Bar1Value1"
        },
        new Bar
        {
            Bar1 = "Bar2Value1"
        }
    }
};


// Act
var o = Mapper.Map<Foo, FooDto>(e);

// Assert

Mapper.AssertConfigurationIsValid();
Assert.AreEqual(e.Foo1, o.Foo1);
Assert.IsNotNull(o.Bars);
Assert.AreEqual(2, o.Bars.Count());

我没有收到任何配置错误,Foo1也可以很好地映射。

o.Bars是一个Castle.Core.Interceptor.IInterceptor[],并且不包含来自我的领域实体的任何值...

我在这里错过了什么?

1个回答

11

真是想不到,我竟然忽略了这么简单的东西。再过7分钟我才能给你点赞。感谢你的帮助! - David Wick

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接