Como incluir tabelas relacionadas no DbSet.Find ()?
Se eu quiser incluir objetos relacionados em uma consulta EF7, é fácil e agradável:
var myThing = db.MyThings
.Include(t => t.RelatedThing)
.Where(t => t.SomeCondition == true)
.ToList();
Além disso, há um bom método noDbSet<T>
que facilita o carregamento de um único objeto por sua chave:
var myThing = db.MyThings.Find(thingId);
Mas agora eu quero carregarmyThing
pelo seu ID, juntamente com o seuRelatedThing
. Infelizmente (e compreensivelmente).Find()
é um método deDbSet<T>
, nãoIQueryable<T>
. Obviamente, eu poderia fazer isso:
var myThing = db.MyThings
.Include(t => t.RelatedThing)
.SingleOrDefault(t => t.MyThingId == thingId);
Mas eu quero especificamente usar o.Find()
método, porque é legal e genérico e estou escrevendo um método que carrega genericamente um registro junto com os relacionamentos "incluídos" especificados por umExpression<Func<T, object>>
.
Alguma sugestão de como fazer isso?