我正在尝试更新现有实体
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-Item分配给Ef-item时出现以下错误:
itemFromDb.MamConfigurationToBrowser_V1 = item.MamConfigurationToBrowser_V1;
EntityCollection
已初始化。该 只应调用InitializeRelatedCollection
方法进行初始化 在对象图的反序列化过程中使用新的EntityCollection
。
更新
我试过@ Gert的方式:
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
命令时
操作失败:无法更改关系,因为一个或多个外键属性不可为空。当对关系进行更改时,相关的外键属性将设置为空值。如果外键不支持空值,则必须定义新关系,必须为外键属性分配另一个非空值,或者必须删除不相关的对象。
答案 0 :(得分:0)
尝试:
itemFromDb.MamConfigurationToBrowser_V1.Clear();
foreach (var item in item.MamConfigurationToBrowser_V1)
{
itemFromDb.MamConfigurationToBrowser_V1.Add(item);
}
答案 1 :(得分:0)
可能发生的事情是SignalData在循环期间间接地改变了引擎盖下的订阅者字典并导致该消息。您可以通过更改
来验证这一点试试这个
itemFromDb.MamConfigurationToBrowser_V1.Clear();
foreach (var item in item.MamConfigurationToBrowser_V1.ToList()) //.ToList()
{
itemFromDb.MamConfigurationToBrowser_V1.Add(item);
}