2012-03-21 83 views
1

消息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; } 

} 

SenderIDReceiverIDUserID外键在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。 我该怎么做?

回答

2

消息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; } 
} 
相关问题