Линк к сущности сохранить - PullRequest
0 голосов
/ 03 марта 2011

У меня следующая структура базы данных.

enter image description here

Я уже сохранил Buyer в базе данных. У меня есть buyer id. Я должен сохранить контактную информацию покупателя в базе данных, так как я сохраняю контакт в базе данных, мне также нужно сохранить buyercontact в таблице buyercontact. Когда я пытаюсь добавить таблицу BuyerContact в файл edmx, Visual Studio 2010 не позволяет мне сделать это.

Как сохранить информацию в таблице buyercontact? Пожалуйста, помогите.

Говорят, что если в базе данных / edmx поддерживаются соответствующие отношения, то покупательский контакт также будет сохранен в базе данных, когда я оставлю слово "контакт". Я ищу в Интернете, я также нашел похожие вопросы, но я не мог понять.

Пожалуйста, помогите. Должен ли я написать специальный код для сохранения BuyerContact

Когда я пишу этот код для сохранения контакта вместе с buyercontact, я получаю ошибку

Невозможно вставить дубликат ключа в dbo.Buyer

Contact objContact = new Contact();
objContact.FirstName = firstName;
objContact.MiddleName = middleName;
objContact.Lastname = lastName;
objContact.CreatedDate = DateTime.Now;
objContact.AddressId = gAddressId;                    

var buyer = _buyerRepository.GetSingle(x => x.BuyerId == BuyerID);
objContact.Buyer = buyer;

_contactRepository.Add(objContact);
_contactRepository.Save()

Если я удаляю objContact.Buyer = buyer;, то контактная информация успешно сохраняется, но buyercontact не сохраняется. Теперь моя проблема в том, что как только у меня есть контакт, связанный с покупателем, мне также нужно сохранить его в таблице BuyerContact.

Я уже прошел через пост здесь , но О не смог понять. Я использовал общий репозиторий Linq-to-SQL для обычных операций с базами данных, таких как CRUD.

Пожалуйста, помогите, спасибо

1 Ответ

0 голосов
/ 03 марта 2011

попробуйте это вместо:

objContact.Buyer = buyer;
_contactRepository.Add(objContact);
_contactRepository.Save()

заменить на:

buyer.Contacts.Add(objContact);
_buyerRepository.Save();

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

...