=============
KNOWN ISSUES:
=============
V1.2.08202002 (20-aug-2002)
- Generated code is not CLSCompliant due to the fact that the protected members of the abstract
  base class are seen as public methods by FxCop and the compilers, allthough they'll be private
  in an inherited class. This can be fixed easily in the generator but it will result in the 
  breaking of current custom classes which rely on the interface of the current base class
  DBInteractionBase. Therefor, to keep current code working, I decided to move this feature to
  a later version, probably v2.0.
- Weird characters in Table names and field names are not handled correctly. F.e. a '$' in a table
  name, will result in non-compilable code. Because it's bad practise to use those kind of characters
  in table names and field names, no fix is provided, allthough v2.0 will probably be handling this
  type of characters better. 
- Fields with a Default Value constraint are properly handled by the generated code, however due to
  the nature of T-SQL, the default value is emitted hard-coded in the T-SQL stored procedure. This is
  done to allow users to Insert values for fields with a default value, even if there is a default
  value. When the default value constraint changes for a particular field, the stored procedures for
  the table should be regenerated. The .NET code is not changed. When a default value constraint is
  removed from a field, plus it's not NULLable, the .NET code for that table should be regenerated,
  together with the stored procedures, if the developer wants NULL value checks for the property of
  that field: fields with default value constraints don't have NULL value checks. 
- When LLBLGen is started from a network share, or a shared drive, it may crash in a security violation.
  This is due to the fact that the default security settings are that strict that an application which
  is ran from a network share and which creats an instance of a class, will fail to do so. You can
  work around this by OR copying the LLBLGen executable (including the manifest) to your local harddrive,
  OR adjusting the security settings for the LLBLGen assembly to full trust. 

=============
CHANGES:
=============
V1.21.2003.712 (12-jul-2003)
- ADDED: New property in base class: 'RowsAffected' (Int32), which contains the amount of rows affected after an Insert
         Update or Delete action. Will contain -1 when a Select action was called OR when the T-SQL option 'Include NOCOUNT'
         is checked, which effectually switches off row counting and thus no report can be given about the amount of 
         rows affected by an action.
- ADDED: The generation of DeleteW<ForeignKey>Logic routines. SqlServer 7 doesn't support cascading deletes so you'll need 
         these routines. SqlServer 2000 does support cascading deletes and these are the prefered way to delete orphaned
         FK rows since it doesn't require a transaction on the .NET level, everything will run in the DELETE statement's 
         transaction inside SqlServer.
- ADDED: Because LLBLGen v1.x can only deal with 1 schema, only the schema 'dbo' is supported, which is normally the schema of
         the database owner. All objects not part of this schema are not listed and no code is generated for these objects.
         The filter is added to prevent null pointer exceptions when an object of another schema was selected. If you do not
         see an object in the tables/views list, you either are not making connection as a dbo or the object itself is not
         owned by the dbo. Normally all objects should be created by the dbo so in most cases you are not affected by this
         change/addition.
- FIXED: Better folder browser. The new one now also lets you create directories. Still .NET 1.0 compatible.
- FIXED: Minor GUI glitches.
- FIXED: Slightly better exception viewer.
- FIXED: When a database connection failed, all tabs except the connection tab were removed. This was a left-over from the
         old v1.1 codebase. Now all tabs stay in the GUI.
- FIXED: When 'Include ErrorCode' was not checked, the T-SQL generator would emit a dangling ',' at the end of the last input
         parameter in UpdateW<ForeignKey>Logic stored procedures. This is now fixed.
- FIXED: The Tables/Views listview now has clickable column headers which sort the column ascending. Also fixed is the 
         initially sorting of the listview: now the listview is sorted on object type (table/view) and then on table/view name.
- FIXED: Under SqlServer 7, the INFORMATION_SCHEMA.* views, which are part of a catalog (in SqlServer 2000 they're stored in
         the master catalog), were also listed. These are filtered out now, together with the sysalternates view which is also
         a system view.
- FIXED: Under SqlServer 2000 sp3 the query used by LLBLGen to determine which fields are in which tables/views is utterly slow.
         A new query is added which is much faster; it now avoids slow hashtable constructions which were constructed by the
         query optimizer of SqlServer the old query used an INNER JOIN statement. 

         
- NOTES: This release contains some code borrowed from the upcoming LLBLGen Pro (some GUI classes). This code is written 
         using the .NET guidelines as described by Microsoft in the .NET reference manual. Therefor it might be a little
         akward to switch from the old LLBLGen v1.x code which is written using Hungarian Notation and the new code written
         in caMel/PasCal casing. The new code is located in the new folder browser and the new small form StringInput. All
         other new code is written in Hungarian Notation.
- NOTES: The sourcecode is for VS.NET 2003. You need a converter for VS.NET 2002 to load the project in VS.NET 2002. Blame
         Microsoft for their hardcoded linkage between a texteditor and a compiler version.
- NOTES: The documentation is updated, but only for the new features and a small section for VB.NET users.
- NOTES: Changes made by others in the gotdotnet.com workspace of LLBLGen are not included in this release.
- NOTES: No new updates will be made on this codebase after this release. 
         The next version will be LLBLGen Pro, the O/R mapper/code generator for .NET. 
--------------------------------------------------------------------------------------------------
V1.2.11112002 (11-nov-2002)
- FIXED: .NET v1.0 has a bug in the SqlServer driver, where a NULL value can't be saved in a decimal or numeric
         field when the scale is set to 0. LLBLGen will now generate correct code which works around this bug
         by adjusting the scale with 1. This bug is reported to Microsoft.
- FIXED: Paths in the folder browser are now found using case insensitive logic.
- FIXED: When LLBLGen was used on a Windows installation where the primary language was f.e. Turkish, LLBLGen
	     would generate wrong parameters sometimes, when there were f.e. more than 1 lowercase character possible
	     (Turkish has 2 lowercase 'i's) This has been corrected: it now uses culture independent lowercasing in
	     all routines. (Thanks Gokhan Altinoren)
- FIXED: When the database design is implemented in a bad way and mistakes like 2 or more foreign key constraints on
		 one single field are defined, LLBLGen would most of the time refuse to generate code for tables with these
		 mistakes in them. Now, the query retrieving the fields of these tables will not fail anymore but will
		 simply use one of the 2 or more foreign key constraints defined. 

--------------------------------------------------------------------------------------------------
V1.2.09212002 (21-sep-2002)
- FIXED: In the generated C# code, the 'Old' properties for the stored procedure call UpdateW[ForeignKeyField]Logic 
	     were caMel cased when you selected MS Coding style. 
- FIXED: In the message of the exceptions thrown in the NULL value check code in the generated property code, 
		 the Property was caMel cased when you selected MS Coding style.
- FIXED: When a table had an awful lot of fields of the same type, the lines with membervariable declarations
		 got too long for the csc / vbc compilers. Lines are now chopped up in multiple lines when the declarations
		 exceed 1024 chars per line.
- FIXED: When the user selected COM+ load balancing, COM+ based connectionstring support was kept enabled which resulted
	     in unusable code, since COM+ based connection string providing doesn't work in a load balancing environment. When
	     the user selects COM+ load balancing, COM+ based connection string providing is disabled.
- ADDED: Some parts of the documentation have now more links to related other parts of the documentation.
- FIXED: When NULL values are allowed, the code generated always 'false' for 'IsNullable' in the SqlParameter
         creation code. This should be the value of (bNullvalueSupport && bFieldCanBeNull). Allthough the 'false'
         does work, because the value of the variable passed is NULL, this can be due to a bug in .NET, so to prevent
		 breakage of code, LLBLGen now generates a correct value for IsNullable in the SqlParameter creation statements.

--------------------------------------------------------------------------------------------------
V1.2.08202002 (20-aug-2002)
- FIXED: When ObjectPooling is selected as a COM+ service, a method CanBePooled() wasn't created in the
         abstract base class.
- FIXED: When a field is marked as Excluded and it has a Default Value constraint, LLBLGen will use that
         Default Value instead of the LLBLGen's default for the particular type of the field. 
- FIXED: When a field has a default value constraint and the field isn't NULLable, an extra ISNULL() 
	     check is emitted in the INSERT stored procedure, to prevent the insertion of NULL's and to
	     insert the default value instead. The default value is hardcoded in the stored procedure and
	     requires a regeneration of the stored procedures when that value changes in the table/field
	     definition. It's not very common to use default value contraints with non-NULLable fields 
	     however nor are default value constraints changed a lot. 
- FIXED: Timestamp fields weren't excluded from INSERT and UPDATE queries. This has been fixed. Also,
         the wrong default value for Timestamp fields has been removed: it's not used anymore.
- FIXED: ADO.NET contains a bug which doesn't allow a precision which is larger than 38. However, 
		 SQLServer's float datatype has a precision of 53. Generated code contains this precision
		 of 53 and fails at runtime. LLBLGen now contains a workaround for this bug and limits
		 the precision to 38. When MS fixes this bug (if ever), this workaround is removed.
- FIXED: In the frmDirPicker code, when the start directory supplied doesn't exist, LLBLGen will crash.
         This has been fixed: the first root node (probably 'A:') will be selected instead.
- FIXED: When the fonts are enlarged in windows, the gui sizes are not, which means that the texts on
         the controls look horrible. This is fixed. It appears to be a bug in the .NET windowsforms
         renderer: when a tab page is added at runtime, the controls on it aren't auto-resized to meet
         the requirements of the large fonts. This is avoided now, by adding all tab pages at the start
         of the program, but disabling all controls on the tab pages except the controls on the connection
         tab.
- ADDED: Added a known issues chapter to the documentation, plus changed the font into verdana which is much
         more readable than Tahoma. 

--------------------------------------------------------------------------------------------------
V1.2.08112002 (11-aug-2002)
- FIXED: Fixed some bug in the docs and a bug in the INSERT stored proc generator for SQLServer 7

--------------------------------------------------------------------------------------------------
V1.2.08022002 (02-aug-2002)
- FIXED: Fixed some textual errors in the generated code comments ('IDispose' is 
         ofcourse IDisposable etc.)
- ADDED: Added some more feedback text to generator
- FIXED: The progress bar now reflects the amount of work done correctly. 
- FIXED: The SQL type 'real' was suffixed with a length, like real(24), this is 
         incorrect, it should be just 'real'. 
- FIXED: Sometimes in VB.NET, the propertynames were caMel case, not PasCal case. 
         This is corrected.
- FIXED: Added '[' and ']' around property names in VB.NET code, which avoids conflicts 
         in VB.NET code with fieldnames which are also reserved words in VB.NET
- FIXED: When generating VB.NET code, values returned in parameters are not CType()-ed, 
         but are passed along to the SqlType in question, which seems to be a violation 
         of the Option Strict On rules. This is corrected.
- ADDED: Added a Connection Provider class to the LLBLGen generated classes, which will 
         create the database connection object. This class has methods which reflect the 
         ADO.NET transaction methods. When a data-access tier object is created, also 
         this Connection Provider object should be created and should be passed to the 
         data-access tier object. This data-access tier object will then use the 
         connection object of this Connection Provider object to perform all database 
         actions. This way, a data-access tier calling layer can start transactions 
         using ADO.NET methods and avoids using COM+ services which can be quite expensive. 
- ADDED: Added SelectOne methods for all fields which are NOT part of the Primary Key 
         and which have one or more of the following properties: a UNIQUE constraint, 
         is an Identity column, is a RowGUID column.
- FIXED: When no key is defined, OR when identity / rowGUID fields are not part of the 
         PK, identity fields and rowGUID fields will result in SelectAllW<fieldname>Logic 
         stored procedures. This is not correct, since these will result in 1 row, at most. 
         These two fieldtypes in that situation should result in a different SelectOne 
         routine, not a SelectAll routine. (thus SelectOneW<Fieldname>Logic), because 
         selecting on identity field or rowGUID will always limit your resultset to 1 row 
         at most. This is corrected.
- FIXED: SCOPE_IDENTITY() is not supported under SQLServer 7. This is corrected now: when 
         SQLServer 7 is used, LLBLGen will generate code which uses @@IDENTITY.
- FIXED: When a NULL value is passed for an SqlBinary or [n]text field, the [.Value].Length 
         property is invalid, which means the SqlParameter creation code fails. A null 
         value test is emitted when a field CAN be null and when there is a possibility that 
         the SqlParameter creation code will cause a nullvalue exception.
- FIXED: When no fields are returned by the query which retrieves all fields plus info, 
		 LLBLGen should report that and should SKIP that table. No fields are returned with: 
		 empty tables and with faulty constructed tables, f.e. with field with more than 1 FK 
		 constraint. This is corrected now: the table is skipped and a remark is emitted in the
		 stored procedure code.
- ADDED: Added code to the SelectOne methods which will populate all properties with the 
         data read from the table which was stored in the DataTable.
- FIXED: Added better member type grouping in generator. LLBLGen did produce f.e. 2 sections 
		 of SqlString member declarations will appear, because different SQLServer types 
		 result in the same C# / VB.NET type: SqlString (varchar, char, text, ntext etc. 
		 all do). Now, LLBLGen sorts on C#/VB.NET type.
- ADDED: Added View support, so Views can also be selected as 'tables' to generate code for. 
         (insert/selectall methods only due to the lack of PK/FK constraints)
- FIXED: When there is just 1 updatable field / insertable field, the SET clause or FIELDS list 
		 will contain a dangling ',' because it uses suffixes, not prefixes. This is corrected
		 now. Thanks to Colin Young for the patch-code.
- FIXED: When a user excluded one or more fields or when a table did include a computed field, 
         these fields weren't generated in the class member list nor as a property. This is
         corrected.
- FIXED: Some errors in the VB.NET code generator when COM+ services were selected. 
- FIXED: Several minor glitches which made the generated code not compilable nor useable in 
	     some odd circumstances.

