0
這是怎麼了我的域名看起來:EF的DbContext更新實體集合
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; }
}
我想要做的是以下幾點: Updata公司一FieldConfig它的領域,這是我嘗試這樣做:
FieldConfig fc = labelTypeRepo.FindById(fieldConfig.LabelTypeId).FieldConfigs.SingleOrDefault(f => f.FieldConfigId == fieldConfig.FieldConfigId);
fc.Name = fieldConfig.Name;
fc.Fields = NewFields;
labelTypeRepo.SaveChanges();
我這樣做時,它在我的數據庫3個新領域,而不是通常的IDS增加了,所以它看起來是這樣的: 1 - 奧德菲爾德 2 - 奧德菲爾德 3 - 奧德菲爾德 4 - 新野 5 - 新野 6 - 新野
然後我第一次嘗試刪除舊的元素是這樣的:
foreach (Field f in fc.Fields.ToList())
((IObjectContextAdapter)context).ObjectContext.DeleteObject(f);
奏效,但是當我添加了新的領域,卻得到了一個其他標識明顯...
所以我的問題是如何更新這個集合,而不用添加新的字段,同時保持Id的? (不是說我使用DbContext作爲上下文)
我已經檢查過我總是使用相同的上下文。
Thx的幫助..