这是我的目标
<target xsi:type="Database" name="database"
connectionString="${var:connectionString}"
commandText="INSERT INTO [AppOne].[EventLogs](Id, Message, Level, Logger, Action,Identity)VALUES(NewID(), @Message, @Level, @Logger, @Action,@Identity)">
<parameter name="@Message" layout="${message}" />
<parameter name="@Level" layout="${level}" />
<parameter name="@Logger" layout="${logger}" />
<parameter name="@Action" layout="${aspnet-mvc-action}"/>
<parameter name="@Identity" layout="${aspnet-user-identity}"/>
我也在我的Startup.cs中放置了这一行
services.AddSingleton<Microsoft.AspNetCore.Http.IHttpContextAccessor, HttpContextAccessor>();
但是,当我运行我的应用程序并尝试记录项目时,我在内部日志中收到此错误:
错误DatabaseTarget(Name = database):写入数据库时出错。 异常:System.Data.SqlClient.SqlException(0x80131904):不正确 关键字“ Identity”附近的语法。
我正在使用Asp.net Core 2.1。我尝试搜索文档,但看起来它仅支持asp.net?
答案 0 :(得分:1)
您已经使用关键字作为列名,如果可以阻止这种情况的发生,我将避免这样做。但是,您可以通过将关键字放在方括号中来解决错误,因此您的SQL应该是
INSERT INTO [AppOne].[EventLogs](Id, [Message], [Level], Logger, [Action],[Identity])VALUES(NewID(), @Message, @Level, @Logger, @Action,@Identity)