В Entity Framework у нас есть свойства навигации. Вы можете определить свойство навигации в дочерней таблице для строки родительской таблицы. В вашем случае вы можете изменить свою дочернюю сущность следующим образом:
public class Favourite
{
public long FavouriteId { get; set; }
public long AdId { get; set; }
public long UserId { get; set; }
public virtual Ad Ad { get; set; }
}
и теперь Entity Framework должен позаботиться о его заполнении для вас, и вы можете получить доступ к Ad
связанной строке Favourite
, например:
return Context.Ad
.Where(r => r.UserId == userId && r.AdId == adId)
.Select(x => x.Ad.Description);
Но в вашем случае вы можете написать запрос, чтобы узнать, является ли объявление любимым или нет:
return Context.Ad
.Where(r.AdId == adId)
Select(x => new
{
ad = x,
IsFavourite = Context.Favourite.Any(y=> y.AdId = adId
&& y.UserId = currentUserid))
.FirstOrDefault();
Вы можете создать модель представления домена и сопоставить ее с этим:
public UserFavouriteAd
{
public Ad Ad { get; set; }
public IsFavourite { get; set; }
}
и заполните его:
return Context.Ad
.Where(r.AdId == adId)
.ToList()
Select(x => new UserFavouriteAd
{
ad = x,
IsFavourite = Context.Favourite.Any(y=> y.AdId = adId
&& y.UserId = currentUserid))
.FirstOrDefault();