public async Task InsertAsync(Error error) { using (var sqlConn = new SqlCeConnection(ConnectionString)) using (var cmd = sqlConn.CreateCommand()) { cmd.CommandText = @"INSERT INTO [ErrorLog] ([ErrorId] ,[ServerDateTime] ,[Host] ,[User] ,[IsHandled] ,[Type] ,[AppName] ,[CurrentCulture] ,[CLRVersion] ,[Message] ,[Source] ,[StackTrace] ,[ModuleName] ,[MemberType] ,[Method] ,[Processes] ,[ErrorDateTime] ,[OS] ,[IPv4Address] ,[MACAddress] ,[HResult] ,[Line] ,[Column] ,[ScreenCapture] ,[DuplicateNo] ,[Data]) VALUES ( @Id ,@ServerDateTime ,@Host ,@User ,@IsHandled ,@Type ,@AppName ,@CurrentCulture ,@CLRVersion ,@Message ,@Source ,@StackTrace ,@ModuleName ,@MemberType ,@Method ,@Processes ,@ErrorDateTime ,@OS ,@IPv4Address ,@MACAddress ,@HResult ,@Line ,@Column ,@Snapshot ,@Duplicate ,@Data )"; // // Add parameters to command, which will be passed to the stored procedure cmd.Parameters.AddWithValue("@Id", error.Id); cmd.Parameters.AddWithValue("@ServerDateTime", error.ServerDateTime); cmd.Parameters.AddWithValue("@Host", error.Host); cmd.Parameters.AddWithValue("@User", error.User); cmd.Parameters.AddWithValue("@IsHandled", error.IsHandled); cmd.Parameters.AddWithValue("@Type", error.ErrorType); cmd.Parameters.AddWithValue("@AppName", error.AppName); cmd.Parameters.AddWithValue("@CurrentCulture", error.CurrentCulture); cmd.Parameters.AddWithValue("@CLRVersion", error.ClrVersion); cmd.Parameters.AddWithValue("@Message", error.Message); cmd.Parameters.AddWithValue("@Source", error.Source ?? "Source Not Found"); cmd.Parameters.AddWithValue("@StackTrace", SubLimitString(error.StackTrace)); cmd.Parameters.AddWithValue("@ModuleName", error.ModuleName); cmd.Parameters.AddWithValue("@MemberType", error.MemberType); cmd.Parameters.AddWithValue("@Method", error.Method); cmd.Parameters.AddWithValue("@Processes", SubLimitString(error.Processes)); cmd.Parameters.AddWithValue("@ErrorDateTime", error.ErrorDateTime); cmd.Parameters.AddWithValue("@OS", error.OS); cmd.Parameters.AddWithValue("@IPv4Address", error.IPv4Address); cmd.Parameters.AddWithValue("@MACAddress", error.MacAddress); cmd.Parameters.AddWithValue("@HResult", error.HResult); cmd.Parameters.AddWithValue("@Line", error.LineColumn.Line); cmd.Parameters.AddWithValue("@Column", error.LineColumn.Column); cmd.Parameters.AddWithValue("@Duplicate", error.Duplicate); cmd.Parameters.AddWithValue("@Data", SubLimitString(error.Data)); if (error.Snapshot == null) { cmd.Parameters.AddWithValue("@Snapshot", DBNull.Value); } else { cmd.Parameters.AddWithValue("@Snapshot", error.Snapshot.ToBytes()); } try { await sqlConn.OpenAsync(); await cmd.ExecuteNonQueryAsync(); ErrorIds.Add(error.Id, error.IsHandled); } finally { sqlConn.Close(); } } }