Entity framework 4 Automapper不映射实体框架4.1上下文中新添加的实体

Entity framework 4 Automapper不映射实体框架4.1上下文中新添加的实体,entity-framework-4,automapper,Entity Framework 4,Automapper,我懒得加载我的实体,当我进行初始调用以提取实体列表时,我看到的是System.Data.Entity.DynamicProxies…类型。这很好,我的实体映射到我的DTO也很好。我遇到的问题是,当我向上下文中添加一个新项时,它是从上下文而不是数据库中提取的。因此,我看到列表与System.Data.Entity.DynamicProxies类型一起被拉回,并且my new item taht是对象的实际类型 例如,我可能有这样一个列表: System.Data.Entity.DynamicPro

我懒得加载我的实体,当我进行初始调用以提取实体列表时,我看到的是System.Data.Entity.DynamicProxies…类型。这很好,我的实体映射到我的DTO也很好。我遇到的问题是,当我向上下文中添加一个新项时,它是从上下文而不是数据库中提取的。因此,我看到列表与System.Data.Entity.DynamicProxies类型一起被拉回,并且my new item taht是对象的实际类型

例如,我可能有这样一个列表:

System.Data.Entity.DynamicProxies.Contact...
System.Data.Entity.DynamicProxies.Contact...
System.Data.Entity.DynamicProxies.Contact...
MyNameSpace.Contact

我创建了一个自定义类型转换器,并注意到DynamicProxy类型有一个源值,但MyNameSpace.Contact没有源值。因此,它不会在我的类型转换器中映射。

在创建实体时,可以在ObjectSet/DbSet中调用
CreateObject/Create
方法,而不使用构造函数

var newContact = context.Contacts.Create();
context.Contacts.Add(newContact);

返回的对象是一个支持延迟加载的代理。

由于我的体系结构,这对我的情况并没有帮助。我有一个存储库和工作单元,它们与我创建实体的方式不同。@DDiVita很抱歉,您需要先将新实体添加到
ObjectSet/DbSet
以获得延迟加载功能。更新了我的答案。事实上,这不起作用。最后我不得不调用:context.Entry(entity.Reference(expression.Load());属性会一直被加载。@ddivita这是一个急切的加载吗?如果是这样的话,它实际上并不是原始问题的解决方案(并不是说你声称它是)