实体框架预先加载为相关对象返回 null

时间:2021-06-18 19:26:28

标签: asp.net-mvc entity-framework

我正在尝试加载相关数据类别。但是它不起作用,我无法弄清楚为什么 Category 为空。

这是我的类别模型:

public class Category
    {
        [Key]
        public int Id { get; set; }

        [Required(ErrorMessage = "Name field is required")]
        public string Name { get; set; }

        public ICollection<Post> Posts { get; set; }
    }

这是我的帖子模型:

 public class Post
    {
        [Key]
        public int Id { get; set; }
        [Required(ErrorMessage = "Post title is required")]
        public string Title { get; set; }

        [Required(ErrorMessage = "Post description is required")]
        [DataType(DataType.MultilineText)]
        public string Description { get; set; }

        [DisplayName("Category")]
        public int? CatId { get; set; }

        public Category Category { get; set; }

    }

还有我的控制器:

var posts = db.Posts.Include(p => p.Category).ToList(); 

我的观点:

@foreach (var item in Model)
                                {
                                    
                                <tr>
                                    <td>
                                        @(i++)
                                    </td>
                                    
                                    <td>
                                        @Html.DisplayFor(modelItem => item.Category.Name)
                                    </td>
                                   
                                </tr>
                                }

1 个答案:

答案 0 :(得分:0)

尝试修复您的课程

public class Category
    {
        [Key]
        public int Id { get; set; }

        [Required(ErrorMessage = "Name field is required")]
        public string Name { get; set; }

        [InverseProperty(nameof(Post.Category))]
        public ICollection<Post> Posts { get; set; }
    }
public class Post
    {
        [Key]
        public int Id { get; set; }
        [Required(ErrorMessage = "Post title is required")]
        public string Title { get; set; }

        [Required(ErrorMessage = "Post description is required")]
        [DataType(DataType.MultilineText)]
        public string Description { get; set; }

        [DisplayName("Category")]
        public int? CategoryId { get; set; }

         [ForeignKey(nameof(CategoryId))]
        [InverseProperty("Posts")]
        public Category Category { get; set; }

    }