Entity Framework-Как добавить к объектам с навигационными свойствами - PullRequest
9 голосов
/ 09 июля 2009

Я хотел бы добавить запись в таблицу SQL Server, используя Entity Framework. Сущность моей таблицы имеет внешние ключи и поэтому имеет навигационные свойства для этих полей. Как при добавлении новой записи / объекта заполнить поля внешнего ключа, поскольку они не отображаются в качестве свойств объекта?

1 Ответ

15 голосов
/ 09 июля 2009

Самый простой способ - сделать запрос для связанных сущностей и использовать свойства навигации:

т.е.

Product p = new Product{
   ID = 5,
   Name = "Bovril",
   Category = ctx.Categories.First( c => c.ID == 5)
};
ctx.AddToProducts(p);
ctx.SaveChanges();

Если вы хотите избежать запроса к базе данных, возможно, самый простой подход - использовать объект STUB, т.е.

// this is a stub, a placeholder for the real entity
Category c = new Category {ID = 5}; 
// attach the stub to the context, similar to do a query
// but without talking to the DB
ctx.AttachTo("Categories", c);
Product p = new Product{
   ID = 5,
   Name = "Bovril",
   Category = c
};
ctx.AddToProducts(p);
ctx.SaveChanges();

Если вам нужна дополнительная помощь по этой технике заглушки, прочитайте эту запись в блоге по теме.

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