1

所以我想早点制作一个自己的自定义映射器,但我得到的建议是这很困难(因为我得到了参考等,我同意这一点^^)而且我会更幸运地使用自动映射器,因为它很容易等等。所以我开始为要转换的类创建映射(我想让这个应用程序每周从 SQLite 文件更新 SQLserver 数据库,表名和属性相同,只有大写字母不同,但是automapper 不区分大小写,非常棒)

这是我尝试过的代码:

Mapper.CreateMap<person, Person>();
Mapper.CreateMap<personAbility, PersonAbility>();
Mapper.AssertConfigurationIsValid();

然后我得到这个人不知道如何转换个性属性的错误。所以我搜索了一下,发现我需要包含它:

Mapper.CreateMap<person, Person>()
.Include<personAbility, PersonAbility>()
Mapper.CreateMap<personAbility, PersonAbility>();
Mapper.AssertConfigurationIsValid();

然而在这里它抱怨它需要的不是个性,而是一个列表(EntityCollection)。所以我尝试了:

Mapper.CreateMap<person, Person>()
.Include<EntityCollection<personAbility>, EntityCollection<PersonAbility>>()
Mapper.CreateMap<personAbility, PersonAbility>();
Mapper.AssertConfigurationIsValid();

但是它给出了一个错误,它不知道类型,我用谷歌搜索了更多的发现:https ://github.com/AutoMapper/AutoMapper/wiki/Lists-and-arrays在支持列表上没有 EntityCollection。意思是我撞到了另一堵墙(死胡同)???任何人都知道解决方案,如果您有其他解决方案/方法来映射我的数据库,我们将不胜感激。

4

2 回答 2

0

我不是很肯定,但是您可能需要在为 Person 创建地图之前为 PersonAbility 创建地图,因为映射 Person 取决于能够映射 PersonAbility 的

于 2012-09-10T20:10:36.067 回答
0

我终于把它修好了。我在包含错误的方式上。我也只需要映射集合

添加此行修复它:(并删除包含行)

        Mapper.CreateMap<EntityCollection<personAbility>, EntityCollection<PersonAbility>>();

感谢所有的努力

于 2012-09-10T21:03:53.337 回答