实体框架2相同的2个实体之间的关系

时间:2015-10-21 16:35:46

标签: c# asp.net-mvc entity-framework

我计划建立一个这样的模型:

public class Message{
    [Key]
    [DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
    public int MessageId { get; set; }

    public string Category { get; set; }
    [Required]
    public string Subject { get; set; }
    public string MessageBody { get; set; }

    // Sender IS ASSOCIATION TO UserProfile 0..1
    [ForeignKey("Sender")]
    public virtual int? UserId { get; set; }
    public UserProfile Sender { get; set; }

    // Recipients IS ASSOCIATION TO UserProfile 0..n
    public virtual ICollection<UserProfile> Recipients { get; set; }
}

因此,消息模型将具有2个与UserProfile模型的关联,具有不同的多重性。我该如何实现?我在MVC Web应用程序中使用Entity-Framework 6。谢谢!

1 个答案:

答案 0 :(得分:1)

您只需添加映射两个语句:

HasOptional(c=>c.Sender).WithMany().HasForeignKey(c=>c.UserId);
HasMany(c=>c.Recepients).WithMany(c=>c.IncomingMessages);

我认为你在消息和接收者之间有多对多的关系,在发件人和消息之间有一对多的关系。

您应该在覆盖方法

中将此代码添加到dbcontext类
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
    modelBuilder.Entity<Message>()
        .HasOptional(c=>c.Sender).WithMany().HasForeignKey(c=>c.UserId)
        .HasMany(c=>c.Recepients).WithMany(c=>c.IncomingMessages);
}
相关问题