从规范化表中获取数据

时间:2016-01-28 07:55:25

标签: c# .net asp.net-mvc entity-framework entity

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

这是我的模特:

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();

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

  

指定的包含路径无效。 EntityType   'xxx.Channel'未声明导航属性   名为'CategoryChannels'。

1 个答案:

答案 0 :(得分:2)

IEnumerable<T>不能是用于延迟/急切加载的导航属性,你必须使用ICollection<T>的实现(Array,List,HashSet ......)或者只是当然ICollection<T>本身。

默认情况下,

IEnumerable是惰性的,因为table这就是为什么你需要一个确保集合的本地副本的实现的原因。