正如您在下面的代码中看到的,我有两个表,其中一个一对多和一个多对多关系。此代码似乎有误,因为我无法从Person实体导航到Meeting实体。我不懂行话,但我会用英语告诉你。
你知道每个人都参加了许多会议 你知道每个人都创造了很多会议 您知道每次会议都有很多与会者 您知道每个会议都有一个创建者
当我们谈论会议时,您可以使用外键告诉创建者" Creator_ID" 当我们谈论会议时,您可以使用中间映射表
来确定与会者是谁当我们谈论一个人时,你可以使用中间映射表告诉会议这个人参加了会议
但是
当我们谈论一个人告诉这个人创建的会议时,你应该经历所有会议并检查他们的外键" Creator_ID"
我知道这是DBMS的工作原理。但由于我正在使用Entity Framework,我希望能够使用
meetings = thisPerson.meetingsCreated;
public class Person
{
public int ID {get; set;}
public string UserName { get; set; }
public ObservableCollection<Meeting> meetingsAttended { get; set; }
public ObservableCollection<Meeting> meetingsCreated { get; set; }
}
public class Meeting
{
public int ID { get; set; }
string Title { get; set; }
[ForeignKey("Creatator_ID")]
public virtual Person createdBy { get; set; }
public virtual ObservableCollection<Person> Attendees { get; set; }
}
我应该在Person类中实现一个遍历所有会议并返回此Person创建的会议的方法吗?我该怎么办?
答案 0 :(得分:0)
您应该有一些配置说明,如
protected override void OnModelCreating(DbModelBuilder modelBuilder) {
modelBuilder.Entity<Meeting>().HasResquired(m => m.CreatedBy).WithMany(p => p.meetingCreated);
modelBuilder.Entity<Meeting>().HasMany(m => m.Attendees).WithMany(p => p.meetingAttended);
}