2

我正在尝试更新现有实体

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);
        }

并得到以下错误:

仅在添加clearandadd命令时

操作失败:无法更改关系,因为一个或多个外键属性不可为空。当对关系进行更改时,相关的外键属性将设置为空值。如果外键不支持空值,则必须定义新关系,必须为外键属性分配另一个非空值,或者必须删除不相关的对象。

4

2 回答 2

0

尝试:

itemFromDb.MamConfigurationToBrowser_V1.Clear();

foreach (var item in item.MamConfigurationToBrowser_V1)
{
     itemFromDb.MamConfigurationToBrowser_V1.Add(item);
}
于 2013-04-21T08:15:35.543 回答
0

可能发生的情况是 SignalData 在循环期间间接更改了订阅者字典并导致该消息。您可以通过更改来验证这一点

尝试这个

 itemFromDb.MamConfigurationToBrowser_V1.Clear();

 foreach (var item in item.MamConfigurationToBrowser_V1.ToList()) //.ToList()
 {
    itemFromDb.MamConfigurationToBrowser_V1.Add(item);
 }
于 2016-05-14T05:59:02.043 回答