从规范化表中获取数据

Get data from normalized tables

我想检索数据(类别频道列表)。

这是我的模型:

public class Category : AuditableEntity<int>
{
    public string Name { get; set; }

    public virtual IEnumerable<CategoryChannel> CategoryChannels { get; set; }
}

public class CategoryChannel : Entity<int>
{
    [Display(Name = "Channel")]
    public string ChannelId { get; set; }

    [ForeignKey("ChannelId")]
    public virtual Channel Channel { get; set; }

    [Display(Name = "Category")]
    public int CategoryId { get; set; }

    [ForeignKey("CategoryId")]
    public virtual Category Category { get; set; }
}

public class Channel : AuditableEntity<string>
{
    public string Name { get; set; }

    public virtual IEnumerable<CategoryChannel> CategoryChannels { get; set; } 
}

这是我的检索数据代码:

    return _entities.Set<Channel>()
        .Include(x => x.CategoryChannels).Where(y => y.Name.Equals(category))
        .AsEnumerable();

最后我收到一条错误消息:

A specified Include path is not valid. The EntityType 'xxx.Channel' does not declare a navigation property with the name 'CategoryChannels'.

IEnumerable<T> 不能是用于 lazy/eager 加载的导航 属性,您必须为此使用 ICollection<T> 的实现(数组,列表, HashSet...) 或者只是 ICollection<T> 本身。

IEnumerable 默认情况下是惰性的,因为 deferred execution 这就是为什么你需要一个确保集合的本地副本的实现。