我正在尝试更新现有的实体
private void UpdateEfItem(MamConfiguration_V1 itemFromDb, MamConfiguration_V1 item)
{
itemFromDb.UpdatedDate = DateTime.Now;
itemFromDb.Description = item.Description;
//references
itemFromDb.MamConfigurationToBrowser_V1 = item.MamConfigurationToBrowser_V1;
itemFromDb.MamConfigurationToGroups_V1 = item.MamConfigurationToGroups_V1;
}
当将ui项分配给ef项时,出现以下错误:
itemFromDb.MamConfigurationToBrowser_V1 = item.MamConfigurationToBrowser_V1;
EntityCollection
已经初始化。这个InitializeRelatedCollection
只应在初始化时调用方法对象图反序列化期间的新
EntityCollection
。更新:
我试过格特的方法:
private void UpdateEfItem(MamConfiguration_V1 itemFromDb, MamConfiguration_V1 item)
{
itemFromDb.UpdatedDate = DateTime.Now;
itemFromDb.Description = item.Description;
itemFromDb.StatusId = item.StatusId;
itemFromDb.Name = item.Name;
itemFromDb.NumericTraffic = item.NumericTraffic;
itemFromDb.PercentageTraffic = item.PercentageTraffic;
itemFromDb.Type = item.NumericTraffic;
itemFromDb.MamConfigurationToBrowser_V1.Clear();
for (int i = 0; i < item.MamConfigurationToBrowser_V1.Count; i++)
{
var elementToAdd = item.MamConfigurationToBrowser_V1.ElementAt(i);
elementToAdd.Browser = mMaMDBEntities.Browsers.Single(browserItem => browserItem.BrowserID == elementToAdd.BrowserID);
elementToAdd.MamConfiguration_V1 = itemFromDb;
itemFromDb.MamConfigurationToBrowser_V1.Add(elementToAdd);
}
并得到以下错误:
仅当添加
clear
和add
命令时操作失败:无法更改关系,因为一个或多个外键属性不可为空。对关系进行更改时,相关外键属性将设置为空值。如果外键不支持空值,则必须定义新关系,必须为外键属性分配另一个非空值,或者必须删除不相关的对象。
最佳答案
尝试:
itemFromDb.MamConfigurationToBrowser_V1.Clear();
foreach (var item in item.MamConfigurationToBrowser_V1)
{
itemFromDb.MamConfigurationToBrowser_V1.Add(item);
}