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



                }





        }

}

Lightswitch でレコードを自動的に更新しようとすると、次のエラーが発生します。

エンティティ 'Member : 6' は、別の EntityContainer に既に接続されているため、この EntityContainer に接続できません。

次のテーブルがあります。Member(s)、Reconciliation(s)、FromMainCompany、ToMainCompany、および Saving(s)。メンバーは貯蓄に関連しています。つまり、メンバーは貯蓄を持っています。また、Member も FromMainCompany に関連しています (FromMainCompany は、Members のコレクションであり、その給与口座控除の合計です。それほど重要ではありません) 。

調整画面に UpdateRecords というボタンがあります(Execute() メソッドに上記のコードがあります)。クリックすると、メンバーの毎月の節約額がすべてのメンバー節約テーブルに自動的に追加されますが、このエラーが発生します - Entity 'Member : 6' は、既に別の EntityContainer にアタッチされているため、この EntityContainer にアタッチできません。

-ありがとう。

4

1 に答える 1

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

        }

        }

AddNew() は foreach ループにあるはずでした。- 乾杯

于 2013-04-07T14:38:48.430 に答える