我使用EF4.x,Code First和Castle Windsor的DI。我的问题:某些虚拟属性在检索新插入的实体时会返回null。我对此很陌生,所以请原谅我对一切工作的无知。一个很简单的例子是这样的:虚拟属性null当检索一个新插入的项目
public class Address
{
public int AddressID { get; set; }
public string Street { get; set; }
public int ProvinceID { get; set; }
public virtual Province { get; set; }
etc....
}
public class Province
{
public int ProvinceID { get; set; }
public string Name { get; set; }
public string Abbreviation { get; set; }
public int DisplayOrder { get; set; }
etc...
}
的SaveChanges(),我可以看到在数据库中创建正确的记录,但在加载地址实体随后的页面请求,ProvinceID设置正确后
所以,但虚拟省份为空。重建后,没有问题。我究竟做错了什么? TIA
更多信息:
我在工作模式库和单位使用的DbContext。我有一个包含所有常见CRUD方法的抽象EF RepositoryBase类。下面是例子的共同GET方法:
public T Get(params object[] keyValues)
{
return _dbSet.Find(keyValues);
}
public IQueryable<T> Get(Func<T, bool> filter)
{
return _dbSet.Where(filter).AsQueryable();
}
public IQueryable<T> GetAll()
{
return _dbSet.AsQueryable();
}
_dbSet设置是这样的:
_dbSet = ((DbContext)_context).Set<T>(); // _context is of IDbContext
也许这里的东西导致了奇怪的问题?
是否启用延迟加载? – 2012-08-13 04:22:16
是否默认启用延迟加载?另外,其他导航属性也可以正常工作,即使这个导航属性只在检索新插入的记录时失败。在下一次重建时,这也开始工作。 – 2012-08-13 05:19:02
而你需要启用代理创建。 – 2012-08-13 05:20:13