Iは次のようにトランザクションを使用する(Entity Frameworkの4.2を使用して)ASP.NET MVC 3アプリケーションを有する:nLogとのTransactionScope
using (var transaction = new TransactionScope())
{
// Database action 1
// Database action 2
context.SaveChanges();
Logger.Info("Record X updated");
transaction.Complete();
}
私はエラーを取得し、ないデータがデータベースに書き込まれていません。しかし、ログファイルのターゲット(テスト目的のためだけに)は正常に動作します。私はそれが正常に動作のTransactionScopeの外ロガーラインを移動する場合
<?xml version="1.0" encoding="utf-8" ?>
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
throwExceptions="true"
internalLogToConsole="true"
internalLogToConsoleError="true" >
<targets>
<target name="logfile" xsi:type="File" fileName="${basedir}app_data\file.txt" />
<target xsi:type="Database" name="database">
<commandText>INSERT INTO [LogEntries] (TimeStamp, Message, Level, Logger) VALUES(GETDATE(), @msg, @level, @logger)</commandText>
<parameter name="@msg" layout="${message}" />
<parameter name="@level" layout="${level}" />
<parameter name="@logger" layout="${logger}" />
<dbProvider>System.Data.SqlServerCe.4.0</dbProvider>
<connectionString>Data Source=${basedir}app_data\Logger.sdf</connectionString>
</target>
</targets>
<rules>
<logger name="*" minlevel="Trace" writeTo="logfile" />
<logger name="*" minlevel="Trace" writeTo="database" />
</rules>
</nlog>
:ここでは私のnLog(私はV2を使用しています)configです。だから私はそれがこれと関係していると思います。私はメインデータベースにSQL Server 2008 r2を、ロギングデータベースにSQL Compact 4を使用しています。また、useTranscations = "true"を追加しようとしました。
私が間違っていることは何ですか?
おかげ
アラン
トランザクションスコープ外でデータベースを使用すると、データベースへのロガーは機能しますか? –
こんにちは、私がトランザクションスコープの外側に移動すると、ロガーが動作します。 –