从EF(到EF)的Automapper不可能吗?

时间:2012-09-10 20:03:10

标签: c# entity-framework automapper

所以我想早点制作一个自己的自定义映射器,但我得到了很难的建议(因为我得到了参考等等,我同意那个^^)并且我会有更多运气,因为它很容易所以我开始为我要转换的类创建映射(我想让这个应用程序在每周基础上从SQLite文件更新SQLserver数据库,表名和属性是相同的,只有大写不是同样,但是automapper对大小写不敏感)

以下是我尝试的代码:

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

然后我得到了一个人不知道如何转换人格特性的错误。所以我用Google搜索并发现我需要包含它:

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。意思是我遇到了另一堵墙(死胡同)???任何人都知道这方面的解决方案,如果您有其他解决方案/方式来映射我的数据库,任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

我最终解决了这个问题。我在错误的方式与包括。我只需要映射集合

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

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

感谢您的所有努力