Много ко многим на одной таблице с дополнительными столбцами - PullRequest
1 голос
/ 21 марта 2012

Сообщение POCO:

[Table("Message")]
public class Message
{
    [Key, Column(Order = 0)]
    public Int64 SenderID { get; set; }

    [Key, Column(Order = 1)]
    public Int64 ReceiverID { get; set; }

    public String Body { get; set; }

}

THE SenderID и ReceiverID являются внешними ключами UserID в User таблице

Пользователь POCO:

[Table("User")]
public class User
{
    [Key]
    public long UserId { get; set; }
    public string UserName { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
}

Мне нужно отношение многие ко многим: Icollection<Message> Messages свойство в User POCO и User Sender, User Receiver свойства вMessage POCO.Как я должен это сделать?

1 Ответ

2 голосов
/ 21 марта 2012

Сообщение POCO:

[Table("Message")]
public class Message
{
    [Key, Column(Order = 0)]
    [ForeignKey("Sender")]
    public Int64 SenderID { get; set; }

    [Key, Column(Order = 1)]
    [ForeignKey("Receiver")]
    public Int64 ReceiverID { get; set; }

    public String Body { get; set; }

    [InverseProperty("SentMessages")]
    public virtual User Sender { get; set; }

    [InverseProperty("ReceivedMessages")]
    public virtual User Receiver { get; set; }
}

Пользователь POCO:

[Table("User")]
public class User
{
    [Key]
    public long UserId { get; set; }
    public string UserName { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }

    public virtual ICollection<Message> SentMessages { get; set; }

    public virtual ICollection<Message> ReceivedMessages { get; set; }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...