我使用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