код asp.net сначала много ко многим с одной и той же таблицей - PullRequest
0 голосов
/ 19 апреля 2019

Для работы отношения M: M необходимо: {В поле «Удалить класс I» необходимо установить идентификаторы (TL_Id, JD_ID, PM_ID) в качестве имени идентификатора класса пользователя (UserId) и т. Д. С именами пользователей объекта (TL, JD, PM)}.

Есть ли способ заставить эту работу ????

public class Users
{
   [Key]
   public int UserId { get; set; }
   public String job_description { get; set; }
   public virtual ICollection<Remove> Remove{ get; set; }
}

public class Remove
{
    [Key, Column(Order = 0)]
    public int TL_Id { get; set; }
    [Key, Column(Order = 1)]
    public int JD_ID { get; set; }
    [Key, Column(Order = 2)]
    public int PM_ID { get; set; }

    public virtual Users TL { get; set; }
    public virtual Users JD { get; set; }
    public virtual Users PM { get; set; }

    public string remove_request { get; set; }
}

1 Ответ

0 голосов
/ 20 апреля 2019

Если вам нужно именно это. Вам необходимо добавить дополнительное свойство в класс Удалить:

public class Remove
{
    [Key, Column(Order = 0)]
    public int TL_Id { get; set; }
    [Key, Column(Order = 1)]
    public int JD_ID { get; set; }
    [Key, Column(Order = 2)]
    public int PM_ID { get; set; }

    public virtual Users RemoveListed{ get; set; }
    ...
}

Создание FK с помощью Fluent API:

modelBuilder.Entity<Remove>()  
    .HasRequired(c => c.RemoveListed)  
    .WithMany(d => d.Remove)
    .HasForeignKey(d => new { d.TL_Id , d.JD_ID, d.PM_ID });

Читать это: https://docs.microsoft.com/en-US/ef/ef6/modeling/code-first/fluent/relationships

Внимание! Users.Remove будет перебирать Remove.RemoveListed.

Я думаю, что это не то, что вы хотите. В этом случае я считаю, что структура данных должна быть пересмотрена.

Это отношения один-ко-многим. Требуется список «многие ко многим» друг для друга в обеих сущностях.

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