2015-09-23 6 views
-1

Я использую платформу Entity Framework с базой примеров Northwind.Не удается обновить свойство объекта в моей базе данных

У меня есть этот объект:

Product p = new Product { ProductName = "New awesome Product" }; 
Category c = new Category { CategoryName = "Cool Category" }; 
p.Category = c; 
pdm.Insert(p); 

ДПМ есть класс, который обрабатывает действия CRUD. Класс ДПМ использует этот рабочий код:

using (var ctx = new NorthwindEntities()) 
     { 
      ctx.Products.Add(p); 
      ctx.SaveChanges(); 
     } 

Однако, если я хочу, чтобы обновить категорию в совершенно новой категории, я стараюсь это:

p.Category = new Category { CategoryName = "Even Cooler Category" }; 
p.ProductName = "Now even more awesome"; 
pdm.Update(p); 

Что вызывает этот код в классе ДПМ:

using (var ctx = new NorthwindEntities()) 
     { 
      Product p = ctx.Products.Find(updatedProduct.ProductID); 
      ctx.Entry(p).CurrentValues.SetValues(updatedProduct); 
      ctx.SaveChanges(); 
     } 

Моя проблема: имя моего продукта изменено в базе данных, Категория остается неизменной. Почему категория не меняется в моей базе данных? Идентификатор категории моей строки продукта остается неизменным, и ни одна из них не является новой категорией, созданной в моей базе данных. Что происходит не так?

ответ

1

Категория является дочерним предприятием Product Entity. SetValues ​​устанавливает только простые типы и не устанавливает связанные объекты. Вам придется самостоятельно вручную настраивать категорию, или использовать такую ​​библиотеку, как Automapper, для этого.

+0

Спасибо, что помогло. – ohyeah

 Смежные вопросы

  • Нет связанных вопросов^_^