【发布时间】:2011-11-14 10:50:22
【问题描述】:
我有一个 ASP.NET MVC 3(使用 Entity Framework 4.2)应用程序,它使用如下事务:
using (var transaction = new TransactionScope())
{
// Database action 1
// Database action 2
context.SaveChanges();
Logger.Info("Record X updated");
transaction.Complete();
}
我没有收到任何错误,但没有数据写入数据库。但是,日志文件目标(仅用于测试目的)工作正常。这是我的 nLog(我正在使用 v2)配置:
<?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>
如果我将 Logger 线移到事务范围之外,它工作正常。所以我认为这与此有关。我的主数据库使用 SQL Server 2008 r2,日志数据库使用 SQL Compact 4。另外,我尝试添加 useTranscations="true"。
任何想法我做错了什么?
谢谢
艾伦
【问题讨论】:
-
在事务范围之外使用时,您的数据库记录器是否工作?
-
嗨赫克托,是的,如果我将记录器移到事务范围之外,记录器就会工作。
标签: asp.net-mvc-3 entity-framework-4 transactions transactionscope nlog