如何在Entity Framework中向第三个表添加额外的列?

时间:2013-12-19 05:01:03

标签: c# entity-framework ef-code-first entity-relationship

假设我有两个实体,UserNotification

public class User
{
[Key]
    public int UserId { get; set; }

// other public properties


// Navigation Properties

    public virtual ICollection<Notification> Notifications { get; set; }
}



public class Notification
{

    [Key]
    public int NotificationId { get; set; }

// other public properties

    // Navigation Properties

    public virtual ICollection<User> Users { get; set; }

}

我只是简单地添加many-to-many这样的关系:

modelBuilder.Entity<User>()
            .HasMany(u => u.Notifications)
            .WithMany(t => t.Users)
            .Map(m =>
            {
                m.ToTable("UserNotifications");
                m.MapLeftKey("UserId");
                m.MapRightKey("NotificationId");
            });

但是,如果我想在此表中添加额外列,其名称为'状态',会发生什么?我以为我可以使用AddColumn但是我如何才能访问此列并获得它的价值?我怎么能做到这一点?我想检查用户是否阅读了通知。任何建议都会很棒,谢谢。

1 个答案:

答案 0 :(得分:2)

您无法在关系中添加“状态”等额外字段。你需要有一个虚拟表。
我认为你的问题与以下答案相同Many to Many mapping with extra fields in Fluent API 可能会有所帮助。

  

用户
  通知
  UserNotification(虚拟表格)您放置状态字段