首页新闻找找看学习计划

entity framework加载关系表数据问题,求大神指教。

0
悬赏园豆:30 [已解决问题] 解决于 2015-05-15 09:30

有两个简单的关系表,“课程种类”和“课程”。

/// <summary>
    /// 课程种类
    /// </summary>
    public class SubjectCategory
    {
        public int SubjectCategoryId { get; set; }

        /// <summary>
        /// 课程种类名称
        /// </summary>
        [Required()]
        [StringLength(20)]       
        public string CategoryName { get; set; }

        [Required()]
        public int Order { get; set; }

        public virtual DbSet<Subject> Subjects { get; set; }
    }

    /// <summary>
    /// 课程
    /// </summary>
    public class Subject
    {
        public int SubjectId { get; set; }

        [Required()]
        [StringLength(20)]
        public string SubjectTitle { get; set; }

        public int SubjectCategoryId { get; set; }

        public virtual SubjectCategory  SubjectCategory{ get; set; }

        [Required()]
        public int Order { get; set; }

        public virtual DbSet<TutorSubject> TutorSubject { get; set; }
        
    }

根据延迟加载的要求,已经标注好了virtual,生成数据库后表的外键关系也正确。可是在循环输出课程类别,当读取课程类别下的具体课程信息时,依然报“未将对象引用到实例”的错误。求大神指教。

@model IEnumerable<TutorJob.Model.SubjectCategory>
@foreach (var item in Model)
{
        <h3>@item.CategoryName</h3>
        @foreach (var subject in item.Subjects)
        {
            <input type="checkbox" value="@subject.SubjectId" />
            <label for="@subject.SubjectId">@subject.SubjectTitle</label>
        }
}
问题补充:

我又试着用Include()预先加载数据,直接报错了。

return DbSet.Include(m => m.Subjects).ToList();

指定的 Include 路径无效。EntityType“TutorJob.Model.SubjectCategory”未声明具有名称“Subjects”的导航属性。

各个地方都检查过了,无解啊!

pkwblack的主页 pkwblack | 菜鸟二级 | 园豆:234
提问于:2015-05-14 19:39
< >
分享
最佳答案
0

用IList而不是DbSet

收获园豆:30
O2DS | 菜鸟二级 |园豆:242 | 2015-05-14 22:31
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册