使用导航属性的 MVC 代码优先

MVC Code First using Navigation Properties

这是一个简单的评论和消息系统。他们还有两个演员:FromActor 和 ToActor...我的代码是这样的:

 public class Comment
 {        
    public int Id { get; set; } 
    public string Title { get; set; }
    public string Text { get; set; }
    public virtual Actor AboutActor { get; set; }        
    public virtual Actor FromActor { get; set; }
 }

 public class Message
 {
    public int Id { get; set; }       
    public string Title { get; set; }       
    public string Text { get; set; }       
    public virtual Actor ToActor { get; set; }
    public virtual Actor FromActor { get; set; } 
}

public class Actor  
{       
    public int Id { get; set; }       
    public string Username { get; set; }
    public virtual List<Comment> Comments { get; set; }
    public virtual List<Message> Messages { get; set; }
}

我遇到了代码优先导航道具的问题。是真的吗?我应该如何编辑解决方案的导航链接或模型?谢谢...

您应该在 Actor class 添加对 CommentMessage 的额外引用,并使用 InversePropertyAttribute 将它们映射到相应的属性。也可以直接声明FKs:

public class Comment
{        
    //other stuff...
    public int AboutActorId { get; set; }        
    public int FromActorId { get; set; }
    public virtual Actor AboutActor { get; set; }        
    public virtual Actor FromActor { get; set; }
}

public class Message
{
    //other stuff...
    public int ToActorId { get; set; }        
    public int FromActorId { get; set; }
    public virtual Actor ToActor { get; set; }
    public virtual Actor FromActor { get; set; } 
}

public class Actor  
{       
    public int Id { get; set; }       
    public string Username { get; set; }

    [InverseProperty("AboutActor")]
    public virtual ICollection<Comment> CommentsAbout { get; set; }
    [InverseProperty("FromActor")]
    public virtual ICollection<Comment> CommentsFrom { get; set; }

    [InverseProperty("ToActor")]
    public virtual ICollection<Message> MessagesTo { get; set; }
    [InverseProperty("FromActor")]
    public virtual ICollection<Message> MessagesFrom { get; set; }
}