Generated code - Database specific features
	Preface
	This small section illustrates the different specific features which are available to you through configuration, either through the .config file of your
	application or through code. This section is more or less an aggregation of what's been discussed elsewhere as well so you won't miss a detail which could be 
	of great benefit in your project. Also be sure to check the 
Application configuration through .config files for more details about features like catalog- and schema-name overwriting.
 
	
	
	SQL Server specific: NEWSEQUENTIALID() support
	When you're using unique_identifier types for primary keys on SQL Server 2005 
	or higher, you can benefit from the new feature of SQL Server 2005 or higher called NEWSEQUENTIALID(). 
	This feature allows you to auto-generate new GUIDs for your primary keys which are sequential, so they are friendly for clustered indexes. To use this feature
	in LLBLGen Pro, you've to specify as the 
default for the primary key field in the table definition: NEWSEQUENTIALID(). Furthermore, you shouldn't set
	the PK field to a new GUID value when you're saving the entity. Before you save the entity set the SQL Server Dynamic Query Engine (DQE) in the SQL Server 2005 
	or higher
	compatibility mode (see below). 
	The DQE will then figure out to let the database insert the NEWSEQUENTIALID() produced value and it's automatically retrieved for you into the entity's PK. 
	
SQL Server specific: compatibility mode
	With the introduction of SQL Server 2005, it became necessary to signal the SQL Server DQE that it should use SQL Server 2005 specific features. This was a more 
	appropriate step than to use a new codebase with solely SQL Server 2005 or 
	higher features as that would make running your code on SQL Server 2005 or 
	higher when it was first created
	for SQL Server 2000 a bit problematic. 
	
	You can set the SQL Server DQE's compatibility mode in two different ways: using the application's .config file or use a code statement. For the application's
	.config file method, please see 
Generated code - Application configuration through .config files. For
	using the code method, please see for SelfServicing: 
Generated code - CommonDaoBase functionality and for Adapter: 
	
Generated code - DataAccessAdapter functionality. 
	
SQL Server specific: ArithAbort support
	When you're using indexed views in your database, and you're inserting data into tables which are used in these indexed views, you'll run into the problem that
	you've to set ARITHABORT ON before the particular insert statement is executed. To signal that the SQL Server DQE has to emit the ARITHABORT statement prior to an
	insert statement, you can use the ArithAbort flag implemented on the CommonDaoBase class (SelfServicing) or DataAccessAdapter class (Adapter). 
	Please see for SelfServicing: 
Generated code - CommonDaoBase functionality and for Adapter: 
	
Generated code - DataAccessAdapter functionality.  
	
SQL Server specific: User Defined Types support
	SQL Server 2005 or higher supports User Defined Types (UDTs) written in a CLR language like C# or VB.NET. The SQL Server driver can read these fields and if you're using 
	UDTs in your tables, the fields which have a UDT as their type will be read by the driver and their UDT type is considered their valid type.
	Entities mapped onto these tables (or views) have then fields which .NET type is equal to the UDT of the target field in the table/view they're mapped on. The
	generated entity classes will have properties inside them which refer to the UDT type as the type of the property, as the UDT is a normal CLR type. In such
	a situation you've to reference the assembly which contains the UDT in your generated code Visual Studio.NET project. (For Adapter, the database generic project).
	Usage of the field in .NET code is like any other code: you can set the field to an instance of the UDT type and normally save it and load it.
	
	Saving a UDT requires that the UDT is serializable 
	to string, which is a requirement for SQL Server as well.
	
SQL Server specific: SQL Server CE Desktop support
	LLBLGen Pro supports SQL Server CE Desktop v3.1 or higher. SQL Server CE Desktop is the win32 runnable version of the  same database known from the compact framework, SQL Server CE 3.0. SQL Server CE Desktop is SQL Server CE v3.1 or higher, but embeds roughly the same features as SQL Server CE 3.0 or higher for the compact framework: no stored procedures, a single schema  and no meta-data retrieval.
	It's recommended that you use the latest CE Desktop version, v3.5, as it contains more features.
To be able to target SQL Server CE Desktop, you first has to  create a SQL Server project.
	Stored procedures aren’t supported on CE Desktop, although they might be generated into the generated code. LLBLGen Pro uses the normal SQL Server DQE assembly for query production for CE Desktop. You also have to specify the compatibility level for the DQE, to signal it that it has to generate queries for SQL Server CE. For more information about this compatibility level, please see Generated code - Application configuration through .config files.
	When loading the generated VS.NET projects, the references to the  SQL Server DQE for .NET 2.0 should be checked. If it's not correct, please correct the reference. To be able to connect to a SqlServerCE desktop database, one  has to adjust the connection string, as this connection string is the one used to connect to the SQL Server catalog from which the LLBLGen Pro project was created. It has to have the format shown by the  following example:
	<add key="Main.ConnectionString"  value="data source=c:\pathtodb\databasename.sdf;"/>
	
As SQL Server CE Desktop doesn’t support multiple catalogs  nor multiple schemas, these features aren’t available. Also  COM+/System.Transactions transactions aren’t supported. All other LLBLGen Pro native features, like dependency  injection, validation, authorization etc. are supported.
	Linq is supported with SQL Server CE Desktop v3.5 or higher, however there are limitations in SQL Server CE Desktop which make it a bit of a struggle. For example the lack of scalar query support can lead to a lot of errors at runtime because a scalar query in a projection or WHERE clause isn't supported by SQL Server CE Desktop. 
	SqlServerCe provider registration
	It's not necessary to reference 
System.Data.SqlServerCe.dll, however on the machine the application is ran  which uses compatibility level 3 or 4, this dll has to be installed as  documented in the SQL Server CE Desktop documentation about deployment: via the  .msi shipped with SQL Server CE Desktop. If you can’t run this .msi installer,  be sure your application’s .config file contains the appropriate provider  registration for the DbProviderFactory. (this information is installed in the  machine.config file by the .msi installer of SQL Server CE Desktop).
	
	More details about this are available in the SQL Server CE Desktop documentation (the 'Books online' documents of SQL Server CE Desktop) 
	SQL Server specific: SQL Azure support
	LLBLGen Pro supports SQL Azure out of the box, at runtime. To make your 
	application run on SQL Azure you have to do the following:
	
		- Use Catalog name overwriting to overwrite your catalog's name to "". 
		See Catalog Name 
		Overwriting in application config files for details how to do this. 
		This works for Selfservicing and adapter. As 'old' catalog name you 
		specify the name of the catalog you're using in the project, e.g. 'Northwind'. 
		As 'new' catalog you specify the empty string: "". 
 
		- Use only one catalog in your project. If you use multiple catalogs 
		in your project, they'll be seen as one catalog on SQL Azure, as there's 
		no catalog name allowed in SQL queries.
 
		- It's recommended to stick to the default schema 'dbo'. If you have 
		used a different schema in your project and you use 'dbo' on SQL Azure, 
		use Schema Name Overwriting (similar to catalog name overwriting) in 
		your application's config file. If you want to use a different schema on 
		SQL Azure, use ALTER USER username WITH DEFAULT_SCHEMA = 
		schemaname; on the SQL Azure database to set it as the default 
		schema. 
 
	
	
	Oracle specific: Ansi joins
	By default, the Oracle DQEs will use Ansi joins, i.e. LEFT/INNER/RIGHT 
	OUTER JOIN syntax. To switch this off,  and use join syntaxis like SELECT .. FROM A, B, C, 
	you can switch this off by using a setting in the application's .config file. Please see: 
	Generated code - Application configuration through .config files for the details.
	
	
	Oracle / Firebird specific: Trigger based sequence values
	It can be that your project's Oracle or Firebird database schema is used by multiple applications, among them your LLBLGen Pro based software. This can give the situation that you've to
	deal with the situation that the schema is configured to use 
triggers to insert sequence values on row insert. To tell the Oracle DQE or Firebird DQE of choice that this
	is the case, and thus that it shouldn't ask for a new sequence value when a new entity is inserted, you've to add a setting to the application's .config file. 
	Please see: 
Generated code - Application configuration through .config files for the details.