我正在为 DI 使用 EF4.x、Code First 和 Castle Windsor。我的问题:某些虚拟属性在检索新插入的实体时返回 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() 之后,我可以看到在 db 中正确创建的记录,但是在加载地址实体的后续页面请求中,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
也许这里的某些东西导致了奇怪的问题?