gpt4 book ai didi

entity-framework - Entity Framework 显式加载多级

转载 作者:行者123 更新时间:2023-12-04 08:30:04 25 4
gpt4 key购买 nike

我尝试使用显式加载加载多级,但发生错误:

"The property path 'Channel.Posts' cannot be used for navigation properties. Property paths can only be used to access primitive or complex properties."



这是我的代码:
var listSubs;

using (var db = new GamePortalContext())
{
listSubs = db.Subscribers.Include("Channel").Where(o => o.User.Username == username.ToLower() && o.Channel.IsActive && o.Channel.IsPublic && o.Channel.Posts.Count(p => p.PublishTime <= DateTime.Now && p.IsActive && p.IsHot) > 0);
if (listSubs.Any())
{
listSubs = listSubs.OrderByDescending(o => o.Channel.ChannelTrack.LastPublishTime);
listSubs = (num == int.MinValue) ? listSubs : listSubs.Take(num);
foreach (var item in listSubs)
{
db.Entry(item).Collection(o => o.Channel.Posts).Query().Where(i => i.IsHot && i.IsActive && i.PublishTime <= DateTime.Now).Take(numpost).Load();
}

return listSubs.ToList();
}
else
{
return null;
}
}

这是我的帖子和 channel 实体

public partial class Post

{

  public Post()

{

this.ReadPostLaters = new HashSet<ReadPostLater>();

}
public string PostId { get; set; }
public string Name { get; set; }
public string Alias { get; set; }
public string Description { get; set; }
public bool IsActive { get; set; }
public bool IsHot { get; set; }
public System.DateTime CreatedAt { get; set; }
public System.DateTime PublishTime { get; set; }
public int Views { get; set; }
public bool IsSticked { get; set; }
public int UpdatedTime { get; set; }
public bool IsSaved { get; set; }
public Nullable<int> ChannelId { get; set; }
public long UserId { get; set; }
public int PostType { get; set; }
public string UrlAvatar { get; set; }
public virtual Article Article { get; set; }
public virtual Channel Channel { get; set; }
public virtual Event Event { get; set; }
public virtual User User { get; set; }
public virtual ICollection<ReadPostLater> ReadPostLaters { get; set; }
public virtual Video Video { get; set; }
}

public partial class Channel

{

   public Channel()
{
this.Ads = new HashSet<Ad>();
this.ChannelAdmins = new HashSet<ChannelAdmin>();
this.ChannelPlayers = new HashSet<ChannelPlayer>();
this.Notifications = new HashSet<Notification>();
this.Posts = new HashSet<Post>();
this.Subscribers = new HashSet<Subscriber>();
}
public int ChannelId { get; set; }
public string Name { get; set; }
public string Username { get; set; }
public int Voters { get; set; }
public int Subs { get; set; }
public float SiteScore { get; set; }
public float UserScore { get; set; }
public string HomeUrl { get; set; }
public string FanpageUrl { get; set; }
public string Publisher { get; set; }
public int Players { get; set; }
public Nullable<System.DateTime> PublishDate { get; set; }
public string Status { get; set; }
public bool IsActive { get; set; }
public bool IsHot { get; set; }
public bool IsPublic { get; set; }
public bool IsNew { get; set; }
public bool IsChanneling { get; set; }
public int CategoryId { get; set; }
public string UrlAvatar { get; set; }
public string UrlCover { get; set; }
public virtual ICollection<Ad> Ads { get; set; }
public virtual CategoryChannel CategoryChannel { get; set; }
public virtual ICollection<ChannelAdmin> ChannelAdmins { get; set; }
public virtual ICollection<ChannelPlayer> ChannelPlayers { get; set; }
public virtual ChannelTrack ChannelTrack { get; set; }
public virtual ICollection<Notification> Notifications { get; set; }
public virtual ICollection<Post> Posts { get; set; }
public virtual ICollection<Subscriber> Subscribers { get; set; }
}

最佳答案

改变

db.Entry(item).Collection(o => o.Channel.Posts).Query().Where(i => i.IsHot && i.IsActive && i.PublishTime <= DateTime.Now).Take(numpost).Load();


db.Entry(item.Channel).Collection(o => o.Posts).Query().Where(i => i.IsHot && i.IsActive && i.PublishTime <= DateTime.Now).Take(numpost).Load();

关于entity-framework - Entity Framework 显式加载多级,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17894620/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com