Как создать отношения внешнего ключа с Entity Framework?

asp.net-mvc entity-framework foreign-key-relationship

Вопрос

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

db.Models.Order order = DB.Models.Order.CreateOrder( apple );
order.CustomerReference.Attach( ( from c in db.Customer where c.Id == custId select c ).First() );
db.SaveChanges();

Код не выполняется на второй строке там, говоря:

Присоединение не является допустимой операцией, когда исходный объект, связанный с этим связанным концом, находится в добавленном, удаленном или отсоединенном состоянии. Объекты, загруженные с использованием опции слияния NoTracking, всегда отсоединяются.

Есть идеи?

Принятый ответ

(Спасибо Джону за исправления грамматики)

Так что я понял это. Вот что вам нужно сделать:

db.Models.Order order = DB.Models.Order.CreateOrder( apple );
order.Customer = (from c in db.Customer where c.Id == custId select c).First();
db.SaveChanges();

Я надеюсь, что это помогает людям.


Популярные ответы

Почему бы не использовать ссылки на сущности? Ваш метод вызовет дополнительный SELECT .

Гораздо более приятный способ - использовать класс CustomerReference и EntityKey .

order.CustomerReference = new System.Data.Objects.DataClasses.EntityReference<Customers>();
order.CustomerReference.EntityKey = new EntityKey("ModelsEntities.Customers", "Id", custId);


Related

Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Является ли этот КБ законным? Да, узнайте, почему
Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Является ли этот КБ законным? Да, узнайте, почему