Reputation: 695
I have two entities one is Users
and another is UserProfile
, both have one to one relationship. I am accessing using Find()
method of DataContext
such as.
public T GetById(object id)
{
return this.Entities.Find(id);
}
But each time I an getting UserProfile
null
. Please help !
Upvotes: 1
Views: 1244
Reputation: 11554
You cannot load related entities by Find
method. while you want get related entities you could explicitly load it.
var post = context.Posts.Find(2);
context.Entry(post).Reference(p => p.Blog).Load();
Or use SingleOrDefault|FirstOrdefault
with Include
method.
And generic way to load navigation property
public TEntity GetItem(Expression<Func<TEntity, bool>> predicate, params Expression<Func<TEntity, object>>[] includeProperties)
{
var query = context.EntitySet<TEntity>().AsQueryable();
if (includeProperties != null)
query = ApplyIncludesOnQuery(query, includeProperties);
return query.SingleOrDefault(predicate);
}
internal static IQueryable<TEntity> ApplyIncludesOnQuery(IQueryable<TEntity> query, params Expression<Func<TEntity, object>>[] includeProperties)
{
// Return Applied Includes query
return (includeProperties.Aggregate(query, (current, include) => current.Include(include)));
}
Upvotes: 2