1 2004-09-23 Francisco Figueiredo Jr. <fxjrlists@yahoo.com.br>
3 * NpgsqlTypes/NpgsqlTypesHelper.cs:
4 ConvertToBackend: Added support for System.Enum types. Now enumerated types can be used correctly as a paramater value. Thanks Martin ( martijn at boland dot org) for the heads up.
6 2004-09-18 Francisco Figueiredo Jr. <fxjrlists@yahoo.com.br>
8 * Npgsql/NpgsqlCommand.cs:
9 GetClearCommandText: Fixed an infinite loop when trying to use a parameter whose name is equals to same type name.
10 i.e.: parameter name :text which would conflict with :text parameter name which was being added in the replacement string.
11 * NpgsqlTypes/NpgsqlTypeConverters.cs:
12 BasicNativeToBackendTypeConverter.ToString: Fixed handling of strings with backslashes. Now they are properly escaped.
14 2004-09-18 Francisco Figueiredo Jr. <fxjrlists@yahoo.com.br>
17 NpgsqlConnector.cs: Improved portal and plan name creation to use an unique number from NpgsqlConnector instead of using an static field in NpgsqlCommand. Thanks Martin ( martijn at boland dot org) for the heads up.
19 2004-09-15 Francisco Figueiredo Jr. <fxjrlists@yahoo.com.br>
20 * Npgsql/NpgsqlRowDescription.cs:
21 FieldIndex: Really added support for case insensitive fields index lookup. Thanks Martin ( martijn at boland dot org)
23 2004-09-14 Francisco Figueiredo Jr. <fxjrlists@yahoo.com.br>
25 * Npgsql/NpgsqlRowDescription.cs:
26 FieldIndex: Added support for case insensitive fields index lookup. Thanks Martin ( martijn at boland dot org)
28 2004-09-12 Francisco Figueiredo Jr. <fxjrlists@yahoo.com.br>
30 * NpgsqlTypes/NpgsqlTypesHelper:
31 VerifyDefaultTypesMap: Added DbType.Byte support. Thanks Martin ( martijn at boland dot org)
34 2004-09-12 Francisco Figueiredo Jr. <fxjrlists@yahoo.com.br>
36 * NpgsqlTypes/NpgsqlTypesHelper:
37 ConvertToBackend: Fixed code to handle null values properly when using extended query mode.
40 2004-09-11 Francisco Figueiredo Jr. <fxjrlists@yahoo.com.br>
42 * Npgsql/NpgsqlConnection.cs:
43 Dispose: Improved implementation. Also added warning logging for
44 NpgsqlConnection leakings.
45 Close: Fixed code to allow calling many times even when being disposed.
46 * Npgsql/NpgsqlConnection.resx:
47 Added new warning logging message for NpgsqlConnection leakings.
48 * Npgsql/NpgsqlConnector.cs:
49 IsValid: new method to check if Connector is still valid.
50 * Npgsql/NpgsqlConnectorPool.cs:
51 GetPooledConnector: Improved to check validity of Connector.
52 FixPoolCountBecauseOfConnectionDisposeFalse: new method to fix the connection pool count
53 because NpgsqlConnection leaking. This way, uses doesn't run out of connections from pool.
55 2004-09-07 Francisco Figueiredo Jr. <fxjrlists@yahoo.com.br>
57 * NpgsqlException.cs: Added support for deserialization of NpgsqlException.
59 * NpgsqlState.cs: Added missing handling of NoData message.
62 2004-07-02 Raja R Harinath <rharinath@novell.com>
64 * Makefile (OVERRIDE_BARE_TARGETS): Remove.
65 ($(the_lib)): Make dependency explicit.
67 2004-06-28 Raja R Harinath <rharinath@novell.com>
69 * Makefile (%.resources): Use $(RESGEN).
71 2004-06-22 Raja R Harinath <rharinath@novell.com>
73 * Makefile: Use $(PLATFORM_PATH_SEPARATOR) in MONO_PATH.
75 2004-06-21 Raja R Harinath <rharinath@novell.com>
77 * Makefile (LIBRARY_SNK): Sign with Npgsql/Npgsql.snk.
79 2004-06-18 Francisco Figueiredo Jr. <fxjrlists@yahoo.com.br>
80 * Synchronized files with gborg cvs up to release 0.6.
82 2004-05-29 Francisco Figueiredo Jr. <fxjrlists@yahoo.com.br>
83 * Npgsql/NpgsqlConnection.cs: Added workaround for redhat server versions.
84 It returns 7.3.4-RH as its server version. Thanks Jaroslaw Kowalski
85 (jaak@zd.com.pl) for the patch.
87 2004-05-24 Francisco Figueiredo Jr. <fxjrlists@yahoo.com.br>
88 * Npgsql/NpgsqlConnection.cs: Fixed bug when handling Unicode connections.
90 Thanks stehule@kix.fsv.cvut.cz for the patch.
92 2004-05-23 Francisco Figueiredo Jr. <fxjrlists@yahoo.com.br>
94 * Npgsql/NpgsqlConnection.cs: Fixed bug which prevented Npgsql to
95 connect to cvs built servers which had devel in its version string.
97 2004-05-22 Francisco Figueiredo Jr. <fxjrlists@yahoo.com.br>
99 Npgsql/NpgsqlCommand.cs,
100 Npgsql/NpgsqlConnection.cs,
101 Npgsql/NpgsqlDataReader.cs,
102 Npgsql/NpgsqlException.cs,
103 Npgsql/NpgsqlTransaction.cs,
104 Npgsql/Design/ConnectionStringEditor.cs,
105 Npgsql/Design/ConnectionStringEditorForm.cs,
106 Npgsql/Design/NpgsqlParameterConverter.cs,
107 Npgsql/Design/NpgsqlParametersEditor.cs,
108 NpgsqlTypes/NpgsqlTypesHelper.cs: Commit log by
109 Glen Parker (glenebob@nwlink.com): Bug #772 ("Using
110 Command and Prepare adds single quotes to strings twice")
111 is fixed :-) It was broken when running on the version 3
112 protocol (extended query support) on PostgreSQL 7.4.
113 Some of the files in Design were formatted with macintosh line
114 terminators. This was screwing up the xmldoc generator in csc,
115 so I reformatted to make it work.
116 I've added some essential xmldoc comments (<summary> tags). Much work
117 remains here, but I wanted to get a few in on common functions and
120 The .build file will now generate the Npgsql.xml file, next to the .dll
121 file. I removed the existing Npgsql.xml from CVS.
123 Thanks Glen Parker for this patch.
126 2004-05-20 Francisco Figueiredo Jr. <fxjrlists@yahoo.com.br>
129 NpgsqlBackEndKeyData.cs,
132 NpgsqlConnectedState.cs,
134 NpgsqlConnection.resx,
136 NpgsqlConnectorPool.cs,
139 NpgsqlMessageTypes.cs,
140 NpgsqlPasswordPacket.cs,
142 NpgsqlRowDescription.cs,
143 NpgsqlStartupPacket.cs,
146 NpgsqlTypes/NpgsqlTypesHelper.cs : - store protocol version as an enum, keep numbers as protocol specific
147 - split more protocol handlers between version 2 and version 3
148 - split MessageTypes class on ver2/ver3 and add remaining types for ver3 - removed handlers for deprecated protocol message types
149 - store BackendKeyData in its own member on Mediator
150 - Store ParameterStatus objects in a key map on Mediator
151 - Get backend version now from the Mediator if possible
152 - Rewrite parsers for server version and connection string
153 - Store server version numericially (in a new class ServerVersion)
154 - As usual, lots of code cleanup/commenting/etc.
156 Thanks very much Glen Parker (glenebob@nwlink.com) for this patch.
158 2004-05-20 Raja R Harinath <rharinath@novell.com>
160 * Makefile (%.resources): Use INTERNAL_RESGEN.
162 2004-05-13 Francisco Figueiredo Jr. <fxjrlists@yahoo.com.br>
164 * Npgsql/NpgsqlHashAlgorithm.cs: Changed exception type from Exception t
165 o InvalidOperationException when calling the Hash property and hash value is nul
166 l. Thanks Gonzalo Paniagua Javier <gonzalo@ximian.com> for catching that.
168 2004-05-09 Francisco Figueiredo Jr. <fxjrlists@yahoo.com.br>
172 NpgsqlClosedState.cs,
174 NpgsqlCommandBuilder.cs,
178 NpgsqlParameterCollection.cs,
180 NpgsqlTransaction.cs: Improved exception handling. Now Npgsql throws mor
181 e meaningful exceptions instead of throw NpgsqlException which are now exclusive
182 ly to sign server errors. Thanks Glen Parker (glenebob@nwlink.com) for the patch.
186 2004-05-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
189 * Npgsql.dll.resources: all the resources command line options are now
190 in a separate response file.
192 2004-05-04 Jaroslaw Kowalski <jaak@zd.com.pl>
193 * Npgsql/NpgsqlDataReader.cs: Fixed RecordsAffected to properly return -1 after "create table" and similar commands.
195 2004-05-01 Francisco Figueiredo Jr. <fxjrlists@yahoo.com.br>
197 * Npgsql/NpgsqlCommand.cs,
198 Npgsql/NpgsqlConnection.cs,
199 Npgsql/NpgsqlConnector.cs,
200 Npgsql/NpgsqlConnectorPool.cs,
201 Npgsql/NpgsqlError.cs,
202 Npgsql/NpgsqlException.cs,
203 Npgsql/NpgsqlParameterCollection.cs,
204 NpgsqlTypes/NpgsqlTypesHelper.cs: Improved exception support. Now NpgsqlException as well as NpgsqlError provide much more information. Thanks Glen Parker (glenebob@nwlink.com) for the patch.
206 2004-04-30 Todd Berman <tberman@sevenl.net>
208 * Npgsql/AssemblyInfo.cs: use the proper path to the .pub file
210 2004-04-30 Duncan Mak <duncan@ximian.com>
212 * Npgsql/AssemblyInfo.cs: Enable delay signing, using Npgsql.pub.
214 * Npgsql/Npgsql.pub: Added to CVS.
216 2004-04-21 Francisco Figueiredo Jr. <fxjrlists@yahoo.com.br>
217 * Npgsql/NpgsqlDataAdapter.cs: Changed RowUpdated and RowUpdating prefix to Npgsql.
218 * Npgsql/NpgsqlClosedState.cs: Removed dependency in TlsException. Carlos Guzman will change this excpetion to internal.
220 * Npgsql/NpgsqlCommand.cs
221 * Npgsql/NpgsqlCommand.resx
222 * Npgsql/NpgsqlConnection.cs
223 * Npgsql/NpgsqlConnection.resx
224 * Npgsql/NpgsqlDataAdapter.cs
225 * Npgsql/NpgsqlError.cs
226 * Npgsql/NpgsqlException.cs
227 * Npgsql/NpgsqlException.resx
228 * Npgsql/NpgsqlMediator.cs
229 * Npgsql/NpgsqlState.cs
230 * Npgsql/NpgsqlState.resx
231 * Npgsql/PGUtil.cs : Added initial error handling code improvements. Thanks Glen Parker (glenebob@nwlink.com) for the patch. NpgsqlException now gives aceess to error collection through the Errors property. This property return a collection of NpgsqlErrors objects. Also it gives access to error message, hint, severity and code. This fixes the feature request 689 in gborg.
235 2004-04-09 Francisco Figueiredo Jr. <fxjrlists@yahoo.com.br>
236 * Npgsql/NpgsqlDataAdapter.cs: Fixed DataAdapter to raise the RowUpdating and RowUpdated events. This also fixes some issues in gborg 710 bug. This modification may have broken CommandBuilder support. Working on that.
238 2004-03-28 Francisco Figueiredo Jr. <fxjrlists@yahoo.com.br>
239 * Npgsql/NpgsqlTransaction.cs: Fixed a bug where rollback was being called when disposing NpgsqlTransaction objects even when transaction was sucessfully commited. Fixes bug 725 in gborg. Thanks melkor (melkor@adinet.com.uy) for spotting that.
241 2004-03-28 Francisco Figueiredo Jr. <fxjrlists@yahoo.com.br>
242 * Npgsql/NpgsqlConnection.cs: Implemented IClonable interface in NpgsqlConnection class. Thanks Juliano Barbosa for pointing it out.
244 2004-03-22 Francisco Figueiredo Jr. <fxjrlists@yahoo.com.br>
245 * Npgsql/NpgsqlAsciiRow.cs
246 * Npgsql/NpgsqlBinaryRow.cs
247 * Npgsql/NpgsqlDataReader.cs: Fixed NpgsqlDataReader.IsDBNull(). It wasn't working for postgresql 7.4+. Thanks Glen Parker (glenebob@nwlink.com) for the patch.
250 2004-03-13 Francisco Figueiredo Jr. <fxjrlists@yahoo.com.br>
252 * Npgsql/NpgsqlConnection.cs:
253 * Npgsql/NpgsqlClosedState.cs: Added support for SSL callbacks points. Now, client applications can provide the callbacks. Npgsql provide a default callback implementation which always assumes the certificate is ok. This allows easy use as client don't need to provide callback to use ssl connections. This also fixes bug 705 in gborg.
254 * NpgsqlTypes/NpgsqlTypesHelper: Applied patch to correctly parse datetimes values with timezone information. Thanks Glen Parker <glenebob@nwlink.com> for the patch.
257 2004-03-06 Francisco Figueiredo Jr. <fxjrlists@yahoo.com.br>
259 * Npgsql/NpgsqlConnectorPool.cs: Fixed bug 706 in gborg. Now Max timeout will be working correctly. Thanks Sami Kuhmonen <feenix@iqs.fi> for the patch.
261 2004-02-29 Francisco Figueiredo Jr. <fxjrlists@yahoo.com.br>
262 * Npgsql/NpgsqlConnection.cs: Better handling of connection encoding. Added support for encoding and connection timeout in connection string.
263 * Npgsql/NpgsqlConnectorPool.cs: Added support for timeout and max connection pool.
265 2004-02-28 Francisco Figueiredo Jr. <fxjrlists@yahoo.com.br>
267 * Npgsql/NpgsqlConnector.cs: Added support for connection encoding.
268 * Npgsql/NpgsqlConnection.cs: Better handling of connection encoding.
269 * Npgsql/NpgsqlCommand.cs: Fixed an Invalid Index error when executing ExecuteScalar() method with an empty resultset. Thanks Lynn A. Roth for the fix. This fixes bug 687 in gborg.
272 2004-02-25 Francisco Figueiredo Jr. <fxjrlists@yahoo.com.br>
274 * Npgsql/NpgsqlDataReader.cs: Fixed a OutOfBoundsException when trying to access an element after have read all elements. Now it throws an InvalidOperationException.
276 * Npgsql/NpgsqlConnection.cs: Fixed Unicode handling. This also fixes bug 695 in gborg. Thanks Sami Kuhmonen <feenix@iqs.fi> for the patch.
279 2004-02-16 Francisco Figueiredo Jr. <fxjrlists@yahoo.com.br>
281 * Npgsql/NpgsqlDataReader.cs: Removed a log line which reduced the conne
282 ction startup time in 300 milliseconds.
284 2004-02-16 Francisco Figueiredo Jr. <fxjrlists@yahoo.com.br>
286 * NpgsqlConnection.cs: Added support for Unicode encoding. Fixes feature
287 request 534 on gborg. Thanks Ivar <ivar@lumisoft.ee> for pointing it out.
289 2004-02-16 Francisco Figueiredo Jr. <fxjrlists@yahoo.com.br>
291 * Npgsql/NpgsqlStartupPacket.cs: Added code to set datestyle to iso when
292 connecting using protocol 3.0 version. Thanks Sami Kuhmonen <feenix@iqs.fi> for pointing it out.
294 2004-02-14 Francisco Figueiredo Jr. <fxjrlists@yahoo.com.br>
296 * Npgsql/NpgsqlCommand.cs: Fixed a bug when handling queries which return no data. Thanks Morten Mertner <morten@mertner.com> for the fix.
298 2004-02-10 Francisco Figueiredo Jr. <fxjrlists@yahoo.com.br>
300 * NpgsqlTypes/NpgsqlTypesHelper.cs: Added support for datetime and time datatypes with timezone data. Thanks Sami Kuhmonen (sami@iqs.fi).
302 2004-01-15 Jackson Harper <jackson@ximian.com>
304 * NpgslTypes/NpgsqlTypesHelper.cs: Add StringFixedLength type.
306 2003-11-23 Pedro Mart�ez Juli� <yoros@wanadoo.es>
308 * Npgsql/HashAlgorithm.cs:
309 * Npgsql/NpgsqlClosedState.cs:
310 * Npgsql/NpgsqlCommand.cs:
311 * Npgsql/NpgsqlConnectedState.cs:
312 * Npgsql/NpgsqlConnection.cs:
313 * Npgsql/NpgsqlReadyState.cs:
314 * Npgsql/NpgsqlStartupState.cs:
315 * Npgsql/NpgsqlState.cs: Apply Disposable pattern, when using
316 ADO.NET we need to call Dispose after using any Component like
317 NpgsqlDataAdapter, NpgsqlConnection, etc... Change a few internal
318 methods to Properties.
320 2003-11-22 Pedro Mart�ez Juli� <yoros@wanadoo.es>
322 * Npgsql/NpgsqlClosedState.cs:
323 * Npgsql/NpgsqlConnectedState.cs:
324 * Npgsql/NpgsqlConnection.cs:
325 * Npgsql/NpgsqlReadyState.cs:
326 * Npgsql/NpgsqlState.cs: Changes related to the last update of SSL
327 implementation. Now we're using TcpClient for the connection and
328 Stream for the abstraction layer to SslClientStream.
330 2003-11-11 Pedro Mart�ez Juli� <yoros@wanadoo.es>
332 * Npgsql/NpgsqlDataReader.cs: GetSchemaTable has nothing to do with
333 CanRead because the schema can be readed with or without result
336 2003-11-10 Pedro Mart�ez Juli� <yoros@wanadoo.es>
338 * Npgsql/NpgsqlDataAdapter.cs: Best use "if" instead of try-catch.
340 2003-11-10 Pedro Mart�ez Juli� <yoros@wanadoo.es>
342 * Npgsql/NpgsqlDataAdapter.cs: Catch the exception thrown by MS.NET
343 when a mapping is not in the collection.
345 2003-11-09 Pedro Mart�ez Juli� <yoros@wanadoo.es>
347 * Npgsql/NpgsqlDataAdapter.cs: Do not assing the result of the
348 CommandBuilder to the local data. Local data should be null if the
349 client doesn't set them.
351 * Npgsql/NpgsqlCommandBuilder.cs: Mistake in param name fixed.
353 2003-11-09 Pedro Mart�ez Juli� <yoros@wanadoo.es>
355 * Makefile: Little fix for build the resources.
357 * Npgsql/NpgsqlCommandBuilder.cs: Added row version in delete
360 2003-11-08 Pedro Mart�ez Juli� <yoros@wanadoo.es>
362 * Npgsql/NpgsqlCommand.cs: Removed try-catch for Resource Manager
363 calls, the problem is fixed.
365 * Makefile: Fix one bug in the build of resources.
367 2003-11-08 Pedro Mart�ez Juli� <yoros@wanadoo.es>
369 * Npgsql/NpgsqlCommandBuilder.cs: Added the command builder.
371 * Npgsql/NpgsqlDataAdapter.cs: Added the CommandBuilder stuff. When
372 OnRowUpdating is called we create the command necesary for updating,
373 inserting or deleting any row of the DataTable/DataSet.
375 * Npgsql/NpgsqlCommand.cs: Temporary try-catch. ResMan still doesn't
376 work. This must be removed when ResMan works.
378 * Npgsql/NpgsqlParameter: No more than one call to value.GetType()
379 is more efficient for the deep if structure types.
381 2003-11-07 Pedro Mart�ez Juli� <yoros@wanadoo.es>
383 * Npgsql/NpgsqlDataAdapter.cs: Fixed the mistake I did in the last
384 change. The Command objects must not be created in the constructor.
385 The Commands should be in the overrided method "OnRowUpdating".
387 * Npgsql/NpgsqlCommand.cs: Added two try-catch instructions to get
388 the proper exception (not MissingManifestResourceException). It is
389 thrown in MS.NET and in MONO. (Npgsql compiled with MCS).
391 2003-11-07 Pedro Mart�ez Juli� <yoros@wanadoo.es>
393 * Npgsql/NpgsqlDataAdapter.cs: Create new Command classes for the
394 different Insrt / Update / Delete commands.
396 2003-10-20 Pedro Mart�ez Juli� <yoros@wanadoo.es>
398 * Npgsql/NpgsqlClosedState.cs:
399 * Npgsql/NpgsqlConnection.cs:
400 * Npgsql/NpgsqlConnectedState.cs:
401 * Npgsql/NpgsqlReadyState.cs:
402 * Npgsql/NpgsqlState.cs: Changed the namespace for Tls, now the
403 namespace is Mono.System.Protocol.Tls, before was
406 * Npgsql/Makefile: Change reference from System.Security.Tls to
407 Mono.Security (now Tls lives there).
409 2003-10-16 Pedro Mart�ez Juli� <yoros@wanadoo.es>
411 * Npgsql/NpgsqlClosedState.cs:
412 * Npgsql/NpgsqlConnectedState.cs:
413 * Npgsql/NpgsqlConnection.cs: Changed TcpClient by TlsSession
414 because now it is used TlsSession and it doesn't work without
417 2003-10-16 Pedro Mart�ez Juli� <yoros@wanadoo.es>
419 * Makefile: changed reference from Lib/System.Security.Tls.dll to
420 System.Security.Tls because the last will be installed before and
423 * Lib: Removed Lib directory, moved System.Security.Tls.dll to
424 Mono.Security.Tls library directory.
426 2003-10-15 Pedro Mart�ez Juli� <yoros@wanadoo.es>
428 * Makefile: fix building and the install objectives.
430 2003-04-26 Pedro Mart�ez Juli� <yoros@wanadoo.es>
432 * Npgsql/NpgsqlDataReader.cs: Change GetFloat and GetDouble. Now
433 they works as direct casting from GetValue.
435 2003-07-18 Peter Williams <peter@newton.cx>
437 * Npgsql/AssemblyInfo.cs: Don't strongname the assembly, because
438 we can't unless corlib is strongnamed too. Not a wonderful solution,
439 but I don't think this ever worked anyway.
441 2003-05-25 Francisco Figueiredo Jr. <fxjrlists@yahoo.com.br>
442 * Npgsql/NpgsqlDataReader.cs: Fixed an invalid index exception when
443 processing 0 rows queries.
445 2003-04-26 Pedro Mart�ez Juli� <yoros@wanadoo.es>
447 * Npgsql/NpgsqlDataReader.cs: Now GetDateTime works for "dd/MM/yyyy"
448 date formats. I think that it's needed support to auto-detect
449 DateTime format through PgSql server configuration.
451 2003-01-28 Daniel Morgan <danmorg@sc.rr.com>
453 * Npgsql.build: got it to work for Windows build
455 * Npgsql/Npgsql.build
457 * Npgsql/Npgsql.prjx: removed files not needed
459 2003-01-28 Daniel Morgan <danmorg@sc.rr.com>
461 * added the Npgsql (Npgsql is a .Net Data Provider for PostgreSQL)
462 from http://gborg.postgresql.org/project/npgsql/projdisplay.php
463 by adding the following files and directories to the mcs module
464 in mono-cvs.ximian.com at mcs/class:
477 Npgsql/Npgsql (directory)
478 Npgsql/AssemblyInfo.cs
479 Npgsql/NpgsqlAsciiRow.cs
480 Npgsql/NpgsqlBackEndKeyData.cs
481 Npgsql/NpgsqlClosedState.cs
482 Npgsql/NpgsqlCommand.cs
483 Npgsql/NpgsqlConnectedState.cs
484 Npgsql/NpgsqlConnection.cs
485 Npgsql/NpgsqlConnector.cs
486 Npgsql/NpgsqlConnectorPool.cs
487 Npgsql/NpgsqlDataAdapter.cs
488 Npgsql/NpgsqlDataReader.cs
489 Npgsql/NpgsqlEventLog.cs
490 Npgsql/NpgsqlException.cs
491 Npgsql/NpgsqlMediator.cs
492 Npgsql/NpgsqlMessageTypes.cs
493 Npgsql/NpgsqlParameter.cs
494 Npgsql/NpgsqlParameterCollection.cs
495 Npgsql/NpgsqlPasswordPacket.cs
496 Npgsql/NpgsqlQuery.cs
497 Npgsql/NpgsqlReadyState.cs
498 Npgsql/NpgsqlResultSet.cs
499 Npgsql/NpgsqlRowDescription.cs
500 Npgsql/NpgsqlStartupPacket.cs
501 Npgsql/NpgsqlStartupState.cs
502 Npgsql/NpgsqlState.cs
503 Npgsql/NpgsqlTransaction.cs