Vous ne pouvez pas inclure une collection enfant filtrée du parent sélectionné. Vous ne pouvez inclure que la collection complète ou aucune collection enfant. Mais comme une solution de contournement, vous pouvez utiliser un type anonyme intermédiaire, comme ceci:
var q = (from uo in _unitOccupierContext.GetUnitOccupierQuery()
select new {
Parent = uo,
Childs = uo.UnitOccupierDetails
.Where(uod => uod.MyDetailsProp == MyDetailsValue)
}).FirstOrDefault();
if (q != null)
{
UnitOccupier selectedUnitOccupier = q.Parent;
selectedUnitOccupier.UnitOccupierDetails = q.Childs.ToList();
// selectedUnitOccupier now only contains the filtered childs
}
Modifier
Si vous souhaitez interroger les Childs et inclure leurs parents (liés à la question dans le commentaire), vous pouvez utiliser:
var q = _unitOccupierContext.GetUnitOccupierQuery()
.SelectMany(uo => uo.UnitOccupierDetails
.Where(uod => uod.MyDetailsProp == MyDetailsValue))
.Include(uod => uod.UnitOccupier)
.FirstOrDefault(); // or .ToList() if you expect more than one record
// q is now null or a single UnitOccupierDetails entity
// with a reference to its parent
Je suppose ici que votre classe UnitOccupierDetails
possède une propriété de navigation au parent UnitOccupier
.
Puis-je interroger l'enfant et inclure le parent? – Greg
@greg: voir modifier dans ma réponse. – Slauma
Merci pour la mise à jour - J'ai essayé d'interroger l'entité OwnerOccupierDetails et de la filtrer à l'entité dont j'ai besoin. Cela fonctionne bien jusqu'à ce que vous arriviez à enregistrer l'entité, car il a besoin de son parent et provoquer des erreurs référentielles dans la base de données. Je vais réessayer avec le code ci-dessus ... – Greg