私のプロジェクトは、PresentationLayer、BusinesLogicLayer、DataAccessLayer に分かれています。作成されたすべてのオブジェクトは、これらのレイヤーを通過します。単純化すると:
SetFilter.xaml.cs
FilterFactory fFactory = new FilterFactory();
Filter myFilter = fFactory.Create(someClient, time, message);
FilterBLO filterBLO = new FilterBLO();
filterBLO.Save(myFilter);
FilterBLO.cs
FilterDAO filterDAO = new FilterDAO();
using (TransactionScope transcope = new TransactionScope())
{
filterDAO.Save(myFilter);
transcope.Complete()
}
FilterDAO.cs
using(DBDataContext dbdc = new DBDataContext)
{
dbdc.Filter.InsertOnSubmit(myFilter);
changeSet = dbdc.GetChangeSet();
dbdc.SubmitChanges()
}
フィルターは、 とを含むテーブルClientを使用してテーブルに接続されます。(多対多の関係)ClientFilterFilterIDClientID
新しい 3 つのオブジェクトを作成するとすべて問題ありませんがClient、データベースに存在している場合 (また、別のオブジェクトと別のオブジェクトを使用しているClientBLO場合)、エラーが発生します:ClientDAOTransactionScopeDBDataContext
別の DataContext から読み込まれた可能性がある、新しくないエンティティをアタッチまたは追加しようとしました。これはサポートされていません。
(他の同様のスレッドを検索しましたが、問題の解決策が見つかりませんでした。)
そして最後に私の質問
データベースに存在する場合、どのように保存myFilterすればよいですか。datacontext でClient試してみましたが、同じエラーが発生します。Attach()FilterDAO.cs