public class TestBL
{
public static void AddFolder(string folderName)
{
using (var ts = new TransactionScope())
{
using (var dc = new TestDataContext())
{
var folder = new Folder { FolderName = folderName };
dc.Folders.InsertOnSubmit(folder);
dc.SubmitChanges();
AddFile("test1.xyz", folder.Id);
AddFile("test2.xyz", folder.Id);
AddFile("test3.xyz", folder.Id);
dc.SubmitChanges();
}
ts.Complete();
}
}
public static void AddFile(string filename, int folderId)
{
using (var dc = new TestDataContext())
{
dc.Files.InsertOnSubmit(
new File { Filename = filename, FolderId = folderId });
dc.SubmitChanges();
}
}
}
これはネストされたDataContext(未テスト)の例です。この問題は、上記のように少しの実験にTransactionScopeが追加されたときに始まります。 AddFile関数の最初のAddFileは、AddFileが新しいDataContextを初期化し、DBへの2番目の接続を開くため、トランザクションをDTC(是非とも悪い)にエスカレートします。BLのネストされたdatacontextを処理する方法は?
- DTCの使用が発生しないネストされたDataContextを使用するにはどうすればよいですか?
- これはすべて間違っていますか?私は別にDataContextを使用する必要がありますか?
残念ながら、この質問にはそれほど注意を払わなかったし、十分に答えられていないと感じました:( –