MVC4代码优先-IList未填充数据/视图中出现NullPointer异常
本文关键字:视图 异常 NullPointer 数据 代码 -IList 填充 MVC4 | 更新日期: 2023-09-27 18:21:52
我试图用MVC4写一个博客,但在Post - Comment (1 to n)
和Post - Tag (n to m)
关系方面存在问题,首先使用代码。
标签:
public class Tag
{
[Key]
[Required]
public int ID { get; set; }
[Required]
public string Name { get; set; }
public IList<Post> Posts { get; set; }
}
评论:
public class Comment
{
[Key]
[Required]
public int ID { get; set; }
[Required]
public string Name { get; set; }
[Required]
[EmailAddress]
public string Email { get; set; }
[Required]
public DateTime DateTime { get; set; }
[Required]
[DataType(DataType.MultilineText)]
public string Body { get; set; }
}
职位:
public class Post
{
[Key]
[Required]
public int ID { get; set; }
[Required]
public string Title { get; set; }
[Required]
public DateTime DateTime { get; set; }
[Required]
[DataType(DataType.MultilineText)]
public string Body { get; set; }
public IList<Tag> Tags { get; set; }
public IList<Comment> Comments { get; set; }
}
首先使用这段代码,我得到了一个数据库,它看起来像:
Comment n to 1 Post n to m Tag
其中,对于n to 1
,Post
的外键在Comment
中,并且对于n to m
,创建了交叉表。
现在,我创建了Controller
和View
,以使用Tags
创建新的Post
。
当我查看数据库时,所有内容都填写正确。存在Post
和Tags
,并且交叉表中填充有IDs
。
但现在,当我想在View
中渲染Post
时,我想用@post.Tags
获得数据,其中@post
表示我当前选择的Post
,它具有正确的数据(Title, Name etc
),但对于Tags
,它是我的Model
中的IList<Tag>
,我得到了NullPointer Exception
。(@post.Comments
也是如此)
尽管,在创建Post
:时
new Post() { ID = -1, Tags=new List<Tag>(), Comments=new List<Comment>(), DateTime = DateTime.Now };
编辑:
当使用virtual
时,我得到一个System.Data.EntityCommandExecutionException。已经有一个打开的DataReader与此命令关联,必须首先关闭
解决方案我缺少virtual
关键字,也没有调用Include
方法。为了获得方法,我必须使用System.Data.Entity
现在它工作了,谢谢你们两个
您可能需要将Post
类的Tags
和Comments
属性设置为virtual
,以便对它们进行延迟加载。
public virtual IList<Tag> Tags { get; set; }
public virtual IList<Comment> Comments { get; set; }