It is a simple system for comments and messages. They have also two actors: FromActor and ToActor... My codes are like this:
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; }
}
I'm in trouble with navigation props in code first. Is it true? How should I edit navigation links or models for solution? Thanks...
You should add additional references to Comment
s and Message
s at Actor
class and use InversePropertyAttribute
to map them with corresponding properties. Also you can declare FK
s directly:
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; }
}