2017-07-04 50 views
0

我有麻煩每次寫入日誌數據庫中的一次插入一個GUID標識。它拋出這些錯誤: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這是所有有。只要要創建日誌,它就重複這兩行。我認爲這是由於「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