调用实体时,总是得到空我有一个简单的得到这样的:尝试使用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执行查询并将结果存储在内存中 –