Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/275.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 实体框架:导航属性-代码优先_C#_Sql_Asp.net Mvc_Entity Framework - Fatal编程技术网

C# 实体框架:导航属性-代码优先

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

老兄,我今天真是太高兴了,我想让它发挥作用。我想我缺少了一些导航属性

我的控制器。当我将断点放在foo=5,并查看本地监视窗口时,“listOfComments”有零个元素,即使我的数据库中列出了信息(见下文)

评论类

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)等方式包含了注释,它起到了作用。谢谢斯蒂尔加!