2017-07-04 10 views
0

ログがデータベースに書き込まれるたびにguid IDを挿入する際に問題があります。これは、これらのエラーをスローします:NLogデータベースへのGUIDの書き込み

Exception thrown: 'System.Data.SqlClient.SqlException' in System.Data.SqlClient.dll 
Exception thrown: 'System.Data.SqlClient.SqlException' in NLog.dll 

私がこれまで持っているもの:

@"INSERT INTO [dbo].[Nlogs] 
      (Id,Message) 
      values 
      (@Id,@Message)"; 

    databaseTarget.Parameters.Add(new DatabaseParameterInfo("@Id", Guid.NewGuid().ToString())); 
    databaseTarget.Parameters.Add(new DatabaseParameterInfo("@Message", "${message}")); 

感謝。

+0

スタックトレースを追加してください! – Fruchtzwerg

+0

@Fruchtzwergそれはすべてあります。ログを作成するたびに、これらの2行が繰り返されます。私はそれが主キーである 'Id'によると思うし、同じguidを二度使用できないのでエラーになる。各エントリの新しいGUIDを作成するにはどうすればよいでしょうか? Idを主キーとして削除し、同じGUIDを持つすべての実行で正常にログを記録します。 – user3034572

答えて

1

はこれをやってしまった:

@"INSERT INTO [dbo].[Nlogs] 
     (Id,Message) 
     values 
     (NewID(),@Message)"; 

databaseTarget.Parameters.Add(new DatabaseParameterInfo("@Message", "${message}")); 
0

各エントリの新しいGUIDを作成するにはどうすればよいですか?

使用${guid}または例えばevent properties

は:

<target name="db" 
     xsi:type="Database" 
     connectionStringName="NLogConn" 
     commandText="NSERT INTO [dbo].[Nlogs] 
      (Id,Message) 
      values 
      (@Id,@Message)" > 
    <parameter name="@Id"  layout="${guid}" /> 
    <parameter name="@Message" layout="${message}" /> 
</target> 
+0

私は$ {guid}を試しましたが、私はまだ同じ例外を受け取ります – user3034572

+0

.netコアを使用している可能性がありますか? – user3034572

関連する問題