1

Код ниже обновляет правильные значения в таблице OBJECT_TYPES, но таблица OBJECT_ITEMS перезаписывается, но я не уверен, почему. Может ли кто-нибудь помочь?linq для сущностей - обновление таблиц с новыми значениями не работает

var templateId = Request["id"].AsInt(); 
var dbcontext = new STDEntities1(); 
var query = dbcontext.OBJECT_TYPES.Where(o => o.ID == templateId); 
var template = query.FirstOrDefault(); 
var newItem = new OBJECT_TYPES 
{ 
    CATEGORY_ID = template.CATEGORY_ID, 
    COMPANY_ID = template.COMPANY_ID, 
    OBJECT_NAME = "** Select A Name **", 
    HEIGHT = template.HEIGHT, 
    WIDTH = template.WIDTH, 
    TEMPLATE = template.ID 
}; 


foreach (var field in template.OBJECT_ITEMS) 
{ 
    newItem.OBJECT_ITEMS.Add(field); 

} 
dbcontext.OBJECT_TYPES.Add(newItem); 
dbcontext.SaveChanges(); 
+0

OK - он работает, если вместо него .Add (поле), если я создаю новый элемент и добавляю значения поля (кроме идентификатора и внешнего ключа). Есть ли более лаконичный способ сделать это? –

ответ

1

это происходит потому, что вы добавляете поле, которое на самом деле является объектом, который отслеживается с помощью DataContext/DbContext и даже имеет идентификатор. Таким образом, значения перезаписываются.

Попробуйте создать новое поле ИЛИ попробуйте отделить поле от контекста, а затем поместите ключ Id/Primary в 0 и попробуйте вставить его снова.

+0

спасибо - это имело смысл и вроде того, о чем я думал сам (более нечетким образом). Приветствия. –

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