我有两个实体。活动和用户。我想将事件的创建者(=用户)保存为我的Event实体中的联系人。另外,我想要有几个与我的活动相关的指南(=用户)。
这是我的代码的一部分:
public class User
{
public int ID { get; set; }
public string LoginName { get; set; }
public string DisplayName { get; set; }
public virtual ICollection<Event> Events { get; set; }
}
public class Event
{
public int ID { get; set; }
public string EventName { get; set; }
public User ContactName { get; set; }
public virtual ICollection<Room> Rooms { get; set; }
public virtual ICollection<User> Users { get; set; } // These are the guides
public virtual ICollection<Equipment> Equipments { get; set; }
[Required]
public EventType Type { get; set; }
}
我期待EF6(6.1.3)在用户和事件之间创建1:n和n:m关系。它的作用可以在下面的截图中看到:
有一个1:n的关系 - 正如预期的那样。但是,不是一个n:m关系,而是一个1:n和一个n:1的关系。请帮忙。
答案 0 :(得分:2)
对于多对多链接,您必须在函数中编写它:
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<User>()
.HasMany<Event>(s => s.Events)
.WithMany(c => c.Users)
.Map(cs =>
{
cs.MapLeftKey("UserRefId");
cs.MapRightKey("EventRefId");
cs.ToTable("UserEvent");
});
}
它暗示了另外两个人之间的新桌子
您可以按照guide
进行操作答案 1 :(得分:0)
在Event类中没有映射外键关系:
public class Event
{
public int ID { get; set; }
public string EventName { get; set; }
public int ContactId {get ; set;}
[ForeignKey("ContactId")]
public virtual User Contact { get; set; }
public virtual ICollection<Room> Rooms { get; set; }
public virtual ICollection<User> Users { get; set; } // These are the guides
public virtual ICollection<Equipment> Equipments { get; set; }
[Required]
public EventType Type { get; set; }
}