我是ASP.NET MVC 5中的新手,我需要获取Icollection属性并搜索到其他属性,如果打印第一次搜索的结果很好,但是当我去搜索结果时是null
问题是什么?
var userId = User.Identity.GetUserId();
var user = db.Users.Include( u=> u.Sucursales)
.Where(u => u.Id == userId)
.SingleOrDefault();
if( user != null )
{
var sucursal = user.Sucursales.Include(s => s.Emisor)
.Where(s => s.ID == suc)
.SingleOrDefault();
if (sucursal != null)
{
var tipoCfe = sucursal.Emisor.TiposCfe
.Where(t => t.ID == factura)
.SingleOrDefault();
答案 0 :(得分:1)
您的查询将在您使用SingleOrDefault()
后立即进行,请参阅this StackOverflow question pertaining to SingleOrDefault()您的Include(s => s.Emisor)
会对我说明。由于在获取用户时未包含Emisor,因此您将无法请求,因为您的查询不再是IQueryable类型。您的查询已被执行。
为了检索您需要的数据,您必须在第一次查询期间获取数据。当你检索用户时,我会做类似的事情:db.Users.Include("Sucursales.Emisor")
。
有关包含方法的更多信息... MSDN Explanation of Include Method
答案 1 :(得分:0)
我改变了
var user = db.Users.Include( u=> u.Sucursales)
的
var user = db.Users.Include("Sucursales.Emisor")