I am using the following in an attempt to locate a single member record associated with a specific organisation;
var dataRow = db.Organisation .Include(x => x.Member.Select(m => m.Guid == MemberGuid)) .Where(x => x.Guid == OrganisationGuid) .FirstOrDefault();
However this throws the following error;
"The Include path expression must refer to a navigation property defined on the type. Use dotted paths for reference navigation properties and the Select operator for collection navigation properties. Parameter name: path"
The Include path is valid and if I take out ".Select(m => m.Guid == model.MemberGuid)" it returns a collection of members for the organisation which I then have to process to locate the required member.
Is there a way to locate the specific member without returning the whole collection?
There are two mistakes in your query. First, you are trying to use
.Select to filter the records, you will only get
true/false records in the column. You should use
.Where instead. Second,
.Include accepts a navigation property, not the query.
var dataRow = db.Organisation .Include(x => x.Member) .Where(x => x.Member.Guid == MemberGuid && x.Guid == OrganisationGuid) .FirstOrDefault();
An alternative solution is using join:
var dataRow = (from o in db.Organisation join m in db.Member on o.MemberGuid equals m.MemberGuid where o.Guid == OrganisationGuid && m.Guid == MemberGuid select o).FirstOrDefault();