C# 实体框架:导航属性-代码优先
老兄,我今天真是太高兴了,我想让它发挥作用。我想我缺少了一些导航属性 我的控制器。当我将断点放在foo=5,并查看本地监视窗口时,“listOfComments”有零个元素,即使我的数据库中列出了信息(见下文) 评论类C# 实体框架:导航属性-代码优先,c#,sql,asp.net-mvc,entity-framework,C#,Sql,Asp.net Mvc,Entity Framework,老兄,我今天真是太高兴了,我想让它发挥作用。我想我缺少了一些导航属性 我的控制器。当我将断点放在foo=5,并查看本地监视窗口时,“listOfComments”有零个元素,即使我的数据库中列出了信息(见下文) 评论类 public class Comment { public int Id { get; set; } [Required] public DateTime Date { get; set; } [Required] public strin
public class Comment
{
public int Id { get; set; }
[Required]
public DateTime Date { get; set; }
[Required]
public string Name { get; set; }
[Required]
public string Email { get; set; }
[Required]
public string Body { get; set; }
//Navigational
public Post Post { get; set; }
}
课后
public class Post
{
public Post()
{
Comments = new HashSet<Comment>();
Tags = new HashSet<Tag>();
}
public int Id { get; set; }
[Required]
public string Title { get; set; }
[Required]
public DateTime Date { get; set; }
[Required]
public string Body { get; set; }
//Navigational
public ICollection<Comment> Comments { get; set; }
public ICollection<Tag> Tags { get; set; }
}
数据库表“Posts”具有以下列:
-Id
-Date
-Name
-Email
-Body
-Post_Id
-Id
-Title
-Date
-Body
-TagId
-PostId
例如,我的数据库很好地填充了Comments列,它添加了正确的Post_Id,引用主键和all。我对标记表也有同样的问题,但它甚至有自己的参考表:
数据库表“TagPosts”具有以下列:
-Id
-Date
-Name
-Email
-Body
-Post_Id
-Id
-Title
-Date
-Body
-TagId
-PostId
迷路了,请救命 如果要启用延迟加载,Post类中的Comments集合应该是虚拟的,或者应该使用
Include(p=>p.Comments)
加载原始查询中的数据。一般来说,第二个选项更好。我看不到GetPost的代码只是为了反映GetPost而更新的,我不认为这是个问题,但应该会有所帮助。这对我很有用。我无法通过虚拟化使延迟加载工作(由于新的HashSet,它不断抛出异常)。我无法绕开它,所以在LINQ查询中,我只是用Include(x=>x.comments)、Include(y=>y.Tags)等方式包含了注释,它起到了作用。谢谢斯蒂尔加!