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

本文关键字:实体 两个 关系 之间 框架 | 更新日期: 2023-09-27 18:18:51

我计划有一个这样的模型:

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

所以消息模型与UserProfile模型有两个不同的关联。我该如何实现呢?我在MVC web应用程序中使用实体框架6。谢谢!

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

您可以在映射中添加两个语句:

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);
}
相关文章: