C# 无法附加到此EntityContainer,因为它已附加到另一个EntityContainer。Lightswitch自动更新集合

C# 无法附加到此EntityContainer,因为它已附加到另一个EntityContainer。Lightswitch自动更新集合,c#,silverlight,visual-studio-lightswitch,C#,Silverlight,Visual Studio Lightswitch,} 我试图在Lightswitch中自动更新记录,但出现以下错误: 实体“成员:6”无法附加到此EntityContainer,因为它已附加到另一个EntityContainer。 我有以下表格,从Main Company到Companismy&Save的成员、对账。会员与储蓄相关,即会员有储蓄。而且成员也与MainCompany有关联(FromMainCompany是成员及其工资账户扣减总额的集合-不太重要) 我在对账屏幕上有一个名为UpdateRecords的按钮(它的Execute()方法

}

我试图在Lightswitch中自动更新记录,但出现以下错误:

实体“成员:6”无法附加到此EntityContainer,因为它已附加到另一个EntityContainer。

我有以下表格,从Main Company到Companismy&Save的成员、对账。会员与储蓄相关,即会员有储蓄。而且成员也与MainCompany有关联(FromMainCompany是成员及其工资账户扣减总额的集合-不太重要)

我在对账屏幕上有一个名为UpdateRecords的按钮(它的Execute()方法上有上面的代码)我希望在单击时将会员每月储蓄自动添加到所有会员储蓄表中,但现在我收到此错误-实体“Member:6”无法附加到此EntityContainer,因为它已附加到另一个EntityContainer。

-谢谢

 partial void updateRecords_Execute()
    {
        // Write your code here.

        using (var tempWorkspace = new DataWorkspace())
        {
            Saving NewSavings = tempWorkspace.ApplicationData.Savings.AddNew();

            var koo = from a in FromMainCompanies
                      select a;





            foreach (var i in koo)
                {


                    if (i.Member != null)
                    {
                        NewSavings.CaptureDate = DateTime.Now;
                        NewSavings.Amount = i.Member.Savings.Select(a => a.Amount).FirstOrDefault();
                        NewSavings.FinancialYear = tempWorkspace.ApplicationData.FinancialYears.FirstOrDefault();
                        NewSavings.Member = i.Member;
                        NewSavings.NewSavingsAmount = i.Member.Savings.Select(a => a.NewSavingsAmount).FirstOrDefault();

                        try
                        {
                            tempWorkspace.ApplicationData.SaveChanges();

                        }
                        catch (Exception e)
                        {
                            this.ShowMessageBox(e.Message);
                        }   
                    }



                }





        }

算出了,AddNew()应该在foreach循环中。-干杯

这里有一个相关的问题-但请先尝试将问题的格式设置为更具可读性。对此表示抱歉,单击“更新”按钮时,应自动添加每月储蓄,但我收到错误:实体“成员:6”无法附加到此EntityContainer,因为它已附加到另一个EntityContainer。我相信。储蓄更改是异步的。因此,您正试图在同一EntityContainer上执行许多.SaveChanges操作。您应该在foreach循环之后执行.SaveChanges。是的,SaveChanges方法绝对应该从循环外部调用,而不是从循环内部调用。我还看到,根据我在您提供的代码中看到的内容,您引用了I.Member.Savings,但从未设置过I.Member。但是,我希望出现空引用异常,而不是您看到的异常。感谢Oliver&Yann,现在我为该成员获得了一个空引用异常,Yann知道如何从数据库中设置成员吗?
partial void updateRecords_Execute()
    {
        // Write your code here.

        using (var tempWorkspace = new DataWorkspace())
        {
            var mymembers = tempWorkspace.ApplicationData.Members;
            //var myscreen = this.Reconcilliations1.SelectedItem.FromMainCompanies.Where(a => a.Member != null).Select(b => b.Member);
            //Member myMember = new Member();
            foreach (Member item in mymembers)
            {
            Saving NewSavings = tempWorkspace.ApplicationData.Savings.AddNew();

            ////var koo = from a in FromMainCompanies
            ////          select a.Member;


                NewSavings.CaptureDate = DateTime.Now;
                NewSavings.Amount = item.Savings.Select(a=>a.Amount).LastOrDefault();
                NewSavings.FinancialYear = tempWorkspace.ApplicationData.FinancialYears.FirstOrDefault();
                NewSavings.Member = item;
                NewSavings.NewSavingsAmount = item.Savings.Select(a=>a.NewSavingsAmount).LastOrDefault();
            }





            try
            {
                tempWorkspace.ApplicationData.SaveChanges();

            }
            catch (Exception e)
            {
                this.ShowMessageBox(e.Message);
            } 

        }

        }