C# 如何映射IList<;int>;用Slapper.AutoMapper

C# 如何映射IList<;int>;用Slapper.AutoMapper,c#,dapper,C#,Dapper,我正在尝试使用Slapper.AutoMapper和Dapper来完成以下任务: 我的POCO是这样的: public class MyEntity { public string Name { get; set; } public string Description { get; set; } public int Level { get; set; } public IList<int> Types { get; set; } } 公共类MyE

我正在尝试使用
Slapper.AutoMapper
Dapper
来完成以下任务:

我的POCO是这样的:

public class MyEntity
{
    public string Name { get; set; }
    public string Description { get; set; }
    public int Level { get; set; }
    public IList<int> Types { get; set; }
}
公共类MyEntity
{
公共字符串名称{get;set;}
公共字符串说明{get;set;}
公共整数级别{get;set;}
公共IList类型{get;set;}
}
返回的数据库行如下所示:

public class MyEntity
{
    public string Name { get; set; }
    public string Description { get; set; }
    public int Level { get; set; }
    public IList<int> Types { get; set; }
}

因此,一个实体可以有多种类型。 这就是我绘制这些东西的方式:

dynamic test = conn.Query<dynamic>(sql); Slapper.AutoMapper.Configuration.AddIdentifier(typeof(MyEntity), "Name");
var testContact = Slapper.AutoMapper.MapDynamic<MyEntity>(test);
动态测试=conn.Query(sql);Slapper.AutoMapper.Configuration.AddIdentifier(typeof(MyEntity),“Name”);
var testContact=Slapper.AutoMapper.MapDynamic(测试);

但是,在我的所有结果对象中,Types属性都为null。如何将所有类型值映射到IList类型?

检查Slapper.AutoMapper存储库上的最后一次提交


这里是暗中捅了一刀,但您是否尝试过
Slapper.AutoMapper.Configuration.AddIdentifier(typeof(IList),“Types”)谢谢,但不是那样的。标识符用于确定应聚合到同一对象图中的DB行。因此,在我的例子中,“Name”是标识符,因为所有3个TestItem1行都应该聚合到1个实体中,所以类型应该聚合为一个列表……实际上我正在尝试做完全相同的事情!我尝试将查询中对应的sql列别名为“e.types as types_u2;”,以便slapper尝试将string.empty映射到int32值类型。但这毫无意义,因为slapper似乎只处理引用类型映射。你找到解决办法了吗?@Simon Budin:没有。我得出了相同的结论,它只处理引用类型映射。我最后掉了一个巴掌。相反,我让Dapper返回一个单独的类型,并用常规的自动映射器将该类型映射到域对象。@AdamSzabo好的,谢谢!与此同时,我克隆了repo并手动调整了它,但我的快速而肮脏的解决方案涉及到对int类型的装箱。仅供参考,我在回购协议上提出了一个问题:指出您希望OP查看的行(或至少文件)会很有帮助。干杯。@andeart,“提交”仅包含解决此问题的功能。感谢您提供此功能。什么时候将它包含在NuGet包中?请注意,如果您将整数集合分配给枚举值集合,则此操作目前无法立即执行。如果我在同一个类中有2个IList道具,如何使用此方法?