Доступ к вложенным навигационным свойствам отношения многие ко многим в EF6 MVC5 с таблицей соединений - PullRequest
0 голосов
/ 18 января 2019

У меня есть две таблицы, которые имеют отношение многие ко многим. Когда я добавил миграцию с помощью Package Manager Console, была создана таблица соединений. Я не уверен, насколько это относится к тому, чего я пытаюсь достичь.

Установка выглядит следующим образом ...

У клиента может быть много членов семьи

Учетная запись члена семьи также может быть связана с несколькими клиентами

Я настроил модели вот так

Модель семейного аккаунта

public class FamilyAccount
    {
        public FamilyAccount()
        {
            this.Clients = new HashSet<Client>();
        }
        public int Id { get; set; }
        public string firstName { get; set; }
        public string lastName { get; set; }
        public string userName { get; set; }
        public string emailAddress { get; set; }
        public virtual ICollection<Client> Clients { get; set; }

    }

и модель клиента

public class Client
    {
        public Client()
        {
            this.Family = new HashSet<FamilyAccount>();
        }
        public int Id { get; set; }
        public string Title { get; set; }
        public string firstName { get; set; }               
        public string middleNames { get; set; }
        public string lastName { get; set; }
        public virtual ICollection<FamilyAccount> Family { get; set; }

    }

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

public ActionResult Create(FamilyAccount familyAccount, int clientId)
        {
            if (ModelState.IsValid)
            {
                db.FamilyAccounts.Add(familyAccount);
                db.SaveChanges();
                return RedirectToAction("Index", new { Id = familyAccount.Clients.Id});
            }

            return View(familyAccount);
        }

В моем файле контекста у меня есть следующая настройка

 protected override void OnModelCreating(DbModelBuilder modelBuilder)
        {
            modelBuilder.Entity<Client>()
                .HasMany(c => c.Family).WithMany(i => i.Clients)
                .Map(t => t.MapLeftKey("Client_Id")
                    .MapRightKey("FamilyAccount_Id")
                    .ToTable("FamilyAccountClients"));
        }

По какой-то причине у меня нет доступа к атрибутам familyAccount.Clients, поэтому я не могу использовать familyAccounts.Clients.Id

Если бы кто-нибудь мог сообщить мне, где я иду не так, я был бы признателен

...