調用實體時,總是得到空我有一個簡單的得到這樣的:嘗試使用includeProperties
var tc = _pService.Listar(includeProperties: "Estatus,CatalogosRegistro");
if (tc != null)
{
List<VehiculoGetViewModel> tiposcargas = new List<VehiculoGetViewModel>();
foreach (var item in tc)
{
var carga = new VehiculoGetViewModel()
{
ID = item.ID,
Nombre = item.Nombre,
NombreEstatus = item.Estatus.Nombre,
NombreContenedor = item.CatalogosRegistro.Nombre
};
tiposcargas.Add(carga);
}
}
正如你可以看到我有includeProperties
,我使用Estatus
和CatalogoRegistro
表。
所以,當我打電話NombreEstatus = item.Estatus.Nombre
,item.Estatus.Nombre獲得價值正常,但item.CatalogosRegistro
總是空
視圖模型:
public class VehiculoGetViewModel
{
public Int64 ID { get; set; }
public string Nombre { get; set; }
public string NombreEstatus { get; set; }
public Estatus Estatus { get; set; }
public string NombreContenedor { get; set; }
public CatalogoRegistro CatalogosRegistro { get; set; }
}
型號
[Table("TiposVehiculo", Schema="adm")]
public class TipoVehiculo: Entidad<Int32>
{
[StringLength(255)]
public string Nombre { get; set; }
[StringLength(255)]
public int EstatusID { get; set; }
public Estatus Estatus { get; set; }
public CatalogoRegistro CatalogosRegistro { get; set; }
}
Listar實現通貨膨脹:
public virtual IEnumerable<T> Listar(
Expression<Func<T, bool>> filter = null,
Func<IQueryable<T>, IOrderedQueryable<T>> orderBy = null,
string includeProperties = "")
{
IQueryable<T> query = _dbset;
if (filter != null)
{
query = query.Where(filter);
}
foreach (var includeProperty in includeProperties.Split
(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries))
{
query = query.Include(includeProperty);
}
if (orderBy != null)
{
return orderBy(query).AsEnumerable<T>();
}
else
{
return query.AsEnumerable<T>();
}
}
奇怪的是我不具備使用Estatus
任何問題,我用相同的結構來調用CatalogoRegistro但它總是空,可有些人知道什麼是錯的呢?問候
更新:
checing的var tc = _pService.Listar
查詢後,只扔內的所有值與CatalogosRegistros
加入。那是因爲我不具備CatalogosRegistros_ID
我只是有一個TipoContenedorID
列。爲什麼EF更改我的ID的名字?
所以,如果我改變TipoContenedorID
我得到正確的價值觀:
'Listar'?在哪裏實施? – juharr
對不起,我用'Listar()'實現更新我的問題@juharr – Ledwing
你的問題很可能是從IQueryable到IEnumerable的轉換,其中,IIRC執行查詢並將結果存儲在內存中 –