私のプロジェクトは、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
を使用してテーブルに接続されます。(多対多の関係)ClientFilter
FilterID
ClientID
新しい 3 つのオブジェクトを作成するとすべて問題ありませんがClient
、データベースに存在している場合 (また、別のオブジェクトと別のオブジェクトを使用しているClientBLO
場合)、エラーが発生します:ClientDAO
TransactionScope
DBDataContext
別の DataContext から読み込まれた可能性がある、新しくないエンティティをアタッチまたは追加しようとしました。これはサポートされていません。
(他の同様のスレッドを検索しましたが、問題の解決策が見つかりませんでした。)
そして最後に私の質問
データベースに存在する場合、どのように保存myFilter
すればよいですか。datacontext でClient
試してみましたが、同じエラーが発生します。Attach()
FilterDAO.cs