Сначала я использую код EF 4.1. У меня есть два класса:
public class Product {
public int ID { get; set; }
public string Name { get; set; }
public int ProductTypeID { get; set; }
public virtual ProductType ProductType { get; set; }
}
public class ProductType {
public int ID { get; set; }
public string Name { get; set; }
}
Если у меня есть несколько существующих типов продукта, которые я уже создал (например, идентификаторы 2,3,4), и я пытаюсь назначить один из этих типов продукта новому продукту, он создаст дубликат типа продукта.
Например, если мой самый большой ProductTypeID равен 4, и я запускаю следующий код, он выдаст дубликат:
Expression<Func<ProductType, bool>> expr = s => s.ID == 2;
ProductType t = DBContext.Set<ProductType>().Where(expr).First();
Product p = new Product();
p.ProductType = t;
DBContext.SaveChanges();
Это фактически создаст новую строку в таблице «ProductType». Новый ProductType будет идентичен идентификатору с идентификатором 2, но у него будет новый идентификатор 5. Все, что я пытаюсь сделать, это связать тип с ID = 2 с моим новым продуктом. Есть идеи, что я делаю не так?