2015-04-23 30 views
0

我有一个类:实体框架不会返回代理时,对象在同样的情况下添加

public class Company 
{  
    public System.Guid Id { get; set; } 
    public Nullable<System.Guid> CreatedById { get; set; }  
    public virtual Users CreatedBy { get; set; } 
} 

我加入Company类的新对象上下文和设置CreatedById领域:

var newCompanyId = Guid.NewGuid(); 
var company = new Company(); 
company.Id = newCompanyId; 
company.CreatedById = someId; 

Context.Set<Company>().Add(company); 

然后我使用相同的上下文来检索公司:

var retrievedCompany = Context.Set<Company>().FirstOrDefault(item => item.Id == newCompanyId); 

retrievedCompanyCompany类型,它不是动态代理,所以导航属性CreatedBy不起作用。

是否可以取代代理?

+0

你是否不关闭代理创建:'context.Configuration.ProxyCreationEnabled = false;' – octavioccl

回答

2

您需要通过使用Create()而不是仅实例化Company的实例来使Entity Framework知道您的新实体。您可以使用

var company = ContextSet<Company>().Create(); 

创建Company类型的新实例,然后添加到上下文。将对象添加到上下文时,它将尝试自动提取导航属性,因此它应该在SaveChanges()之前填充。

然后,您将可以在上下文的相同实例中稍后使用该导航属性。