Добавить столбец в перекрестную таблицу, созданную EF - PullRequest
0 голосов
/ 26 марта 2019

Я разрабатываю систему регистрации в ASP.NET и Entity Framework.Когда вы регистрируетесь в отделе, вы можете выбрать виды деятельности, которые вы будете использовать во время вашего пребывания.

У меня есть 2 следующих модельных класса:

public class Department
{
        public int Id { get; set; }
        public string Name { get; set; }
        public string Street { get; set; }
        public string ZipCode { get; set; }
        public string City { get; set; }
        public virtual List<Activity> Activities { get; set; }
}

public class Activity
{
        public int Id { get; set; }
        public string Name { get; set; }
        public virtual List<Department> Departments { get; set; }
}

Потому что это много длямного взаимосвязей между отделами и операциями. EF создает перекрестную таблицу.

-----------------------------------
| # | Department_Id | Activity_Id |
-----------------------------------

Я хотел бы добавить дополнительный столбец в перекрестную таблицу с именем displayOrder, чтобы каждый отдел мог как выбирать, какие действия они предлагают, так и порядок, в котором онихочу отобразить их в.

--------------------------------------------------
| # | Department_Id | Activity_Id | DisplayOrder |
--------------------------------------------------

Возможно ли это сделать с EF или есть лучший метод.Если это возможно, как бы вы заполучили атрибут displayOrder?

Ответы [ 2 ]

0 голосов
/ 26 марта 2019

Да, вам нужно создать модель с переменными Department_Id, Activity_Id и DisplayOrder и отношениями, которые они соответствуют с примером объекта:

public class DepartmentActivity
    {
        #region Public properties

        public int ActivityId{ get; set; }
        public int DepartmentId{ get; set; }
        public string DisplayOrder {get;set;} // this can be whatever you like and add more properties if needed

        #endregion

        #region Relations

        public Activity Activity{ get; set; }
        public Department Department { get; set; }

        #endregion
    }

После этого добавьте в свои DbSets этот класс DepartmentActivity, чтобы представить вашу таблицу и сопоставить ее отношения с создателем моделей

    public DbSet<DepartmentActivity> DepartmentActivities { get; set; }


        modelBuilder.Entity<DepartmentActivity>().HasKey(x => new { x.ActivityId, x.DepartmentId});
        modelBuilder.Entity<DepartmentActivity>()
            .HasOne(x => x.Activity).WithMany(x => x.Departments );
        modelBuilder.Entity<DepartmentActivity>()
            .HasOne(x => x.Department).WithMany(x => x.Activities);

Просто запустите команду создания миграции из ef и теперь у вас должна быть таблица, которая работает как промежуточная таблица с дополнительными необязательными свойствами

0 голосов
/ 26 марта 2019

Не уверен, что вы можете заставить EF делать это, но вы можете создать частичный класс кросс-таблицы, который содержит атрибут displayOrder.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...