我试图以适当的api格式获取数据
我想要的是
Place
--Rating1
---RatingImage1.1
---RatingImage1.2
---UserName
---UserId
--Rating2
---RatingImage2.1
---RatingImage2.2
---UserName
---UserId
简而言之,我试图获取一个地方,其评级(和评级图像),以及给予googlePlaceId评级的用户的名字
尝试了这个,但它会进行并进行一些循环获取,一旦它取出用户,然后获取用户评级并且响应变得庞大
context.Places
.Include(x => x.Ratings.Select(y => y.User))
.Include(x => x.Ratings.Select(c => c.RatingImages))
.Single(x => x.GooglePlaceId == googlePlaceId);
我认为投影或linq加入必须是方式,但我还没有取得任何成功。
这是我的POCOS
放置Poco
public class Place
{
public Place()
{
Ratings = new List<Rating>();
Favourites = new List<Favourite>();
}
public int Id { get; set; }
public string Name { get; set; }
public string GooglePlaceId { get; set; }
public ICollection<Rating> Ratings { get; set; }
public ICollection<Favourite> Favourites { get; set; }
}
评级POCO
public class Rating
{
public Rating()
{
RatingImages = new List<RatingImage>();
}
public int Id { get; set; }
public float RatingValue { get; set; }
public string RatingComment { get; set; }
public int PlaceId { get; set; }
public Place Place { get; set; }
public string UserId { get; set; }
public AspNetUser User { get; set; }
public ICollection<RatingImage> RatingImages { get; set; }
}
用户POCO
public partial class AspNetUser
{
public string UserName { get; set; }
public string Id { get; set; }
// the rest of the fields are omitted
}
答案 0 :(得分:0)
虽然您已经省略了AspNetUser的定义,但我猜它有一个返回评级的导航属性。这是否需要您的应用程序中的任它不会影响数据库的结构,并且删除它将使您的投影完全像您在此处获得的那样工作。您仍然可以使用单独的查询显示单个用户的所有评分 - 但您必须针对最常见的情况进行优化。