我正在建立一系列餐馆的管理门户。我正在使用ASP.NET MVC和EF Code First。
我希望每个用户在登录后只能看到连接到它们的资源。我想在ApplicationUser和餐厅级(模型)之间放置一个联结表(多对多),因为每个用户都可以在很多餐馆工作,每个餐馆都有很多业主/工人。
如何在EF Code中首先执行此操作?就像我做餐厅一样 - > Menue?您是否需要为Applicationuser构建一个新的DBContext才能使其正常工作?
public class Restaurant
{
public int Id { get; set; }
public string Name { get; set; }
public string Adress { get; set; }
public string PhoneNumber { get; set; }
public DateTime StartDate { get; set; }
//Connections
public virtual ICollection<Menue> Menues { get; set; }
}
public class Menue
{
public int Id { get; set; }
public string Name { get; set; }
public bool IsActive { get; set; }
public DateTime ModifyDate { get; set; }
//FK For RestaurantConnection
public int RestaurantId { get; set; }
}
答案 0 :(得分:2)
对于多对多配置,请执行此操作
学生班级应该具有课程的集合导航属性,而课程应该具有学生的集合导航属性
public class Student
{
public Student()
{
this.Courses = new HashSet<Course>();
}
public int StudentId { get; set; }
[Required]
public string StudentName { get; set; }
public virtual ICollection<Course> Courses { get; set; }
}
public class Course
{
public Course()
{
this.Students = new HashSet<Student>();
}
public int CourseId { get; set; }
public string CourseName { get; set; }
public virtual ICollection<Student> Students { get; set; }
}
在您的DbContext中添加此配置
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<Student>()
.HasMany<Course>(s => s.Courses)
.WithMany(c => c.Students)
.Map(cs =>
{
cs.MapLeftKey("StudentRefId");
cs.MapRightKey("CourseRefId");
cs.ToTable("StudentCourse");
});
}
有关详细信息,请阅读本文Configure Many-to-Many relationship