Вот так выглядит мой домен:
public abstract class Field
{
//PK
public int FieldId { get; set; }
//FK
[ForeignKey("FieldConfig")]
public int FieldConfigId { get; set; }
//Relations
public virtual FieldConfig FieldConfig { get; set; }
}
public class FieldConfig
{
//PK
public int FieldConfigId { get; set; }
//Columns
public string Name { get; set; }
//FK
[ForeignKey("LabelType")]
public int? LabelTypeId { get; set; }
//Relations
public virtual LabelType LabelType { get; set; }
public virtual ICollection<Field> Fields { get; set; }
}
Я хочу сделать следующее: обновить поле FieldConfig на его поля, вот как я пытаюсь это сделать:
FieldConfig fc = labelTypeRepo.FindById(fieldConfig.LabelTypeId).FieldConfigs.SingleOrDefault(f => f.FieldConfigId == fieldConfig.FieldConfigId);
fc.Name = fieldConfig.Name;
fc.Fields = NewFields;
labelTypeRepo.SaveChanges();
, когда я делаю это, он добавляет в мою базу данных 3 новых поля вместо обычных идентификаторов, поэтому это выглядит так: 1 - oldfield 2 - oldfield 3 - oldfield 4 - newfield 5 - newfield 6 - newfield
затемСначала я попытался удалить старые элементы, например:
foreach (Field f in fc.Fields.ToList())
((IObjectContextAdapter)context).ObjectContext.DeleteObject(f);
, который работал, но когда я добавил новые поля, они, очевидно, получили другой идентификатор ...
Так что мой вопрос: как я могуобновить эту коллекцию без добавления новых полей при сохранении идентификаторов?(не то чтобы я использовал DbContext в качестве контекста)
Я уже проверил, что я всегда использую один и тот же контекст.
Спасибо за помощь ..