ASP.NET MVC客户门户用户连接表

时间:2017-03-03 08:24:51

标签: c# asp.net asp.net-mvc entity-framework

我正在建立一系列餐馆的管理门户。我正在使用ASP.NET MVC和EF Code First。

我希望每个用户在登录后只能看到连接到它们的资源。我想在ApplicationUser和餐厅级(模型)之间放置一个联结表(多对多),因为每个用户都可以在很多餐馆工作,每个餐馆都有很多业主/工人。

如何在EF Code中首先执行此操作?就像我做餐厅一样 - > Menue?您是否需要为Applicationuser构建一个新的DBContext才能使其正常工作?

enter image description here

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

1 个答案:

答案 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