Entity Framework: добавить новый объект и ссылку на второй новый объект с помощью навигационного свойства - PullRequest
0 голосов
/ 02 августа 2011

У меня есть сценарий, в котором я создаю два новых объекта, которые связаны через навигационное свойство (внешний ключ), например:

            ClientAccount client = new ClientAccount {
                ......
                AccountTypeId = 1
            };

            ClientEmailAddress email = new ClientEmailAddress {
                ClientId = client.Id,
                EmailAddress = "test@test.com"
            };

           client.FkClientEmailAddresses.Add(email);

Когда я пытаюсь сохранить, хотя бы через dbContext.SaveChanges();,Я получаю исключение:

Cannot add or update a child row: a foreign key constraint fails (`test`.`client_email_addresses`, CONSTRAINT `FK_client_email_addresses_client_accounts` FOREIGN KEY (`client_id`) REFERENCES `client_accounts` (`client_account_id`))

Я полагаю, что это потому, что объект ClientAccount не имеет идентификатора в то время, когда я назначаю его для объекта ClientEmailAdresss.

Может ли кто-нибудь подтвердить, является личто я пытаюсь сделать это возможно?Я бы предпочел не иметь несколько вызовов .SaveChanges.

1 Ответ

1 голос
/ 02 августа 2011

Вы должны использовать это вместо:

        ClientAccount client = new ClientAccount {
            ......
            AccountTypeId = 1
        };

        ClientEmailAddress email = new ClientEmailAddress {
            Client = client,
            EmailAddress = "test@test.com"
        };

       client.FkClientEmailAddresses.Add(email);

Это позволит EF отслеживать ссылку между назначенным клиентом и адресом электронной почты, и как только реальный идентификатор возвращается из базы данных, EF должен правильно установить FK в вашем адресе электронной почтыюридическое лицо.

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