Genome 4.2 SP7 released - Wednesday, May 01, 2013
With a few fixes and a small feature!
Genome 4.2 SP6 supports VS2012 RTM - Friday, August 24, 2012
Genome v4.2.7 provides integration to Microsoft Visual Studio 2012 RTM with the same functionality as for VS2010. This release contains only this tool enhancement and no change in the runtime.
Genome 4.2 SP5 with VS2012 RC support - Friday, June 29, 2012
Genome v4.2.6 provides integration to Microsoft Visual Studio 2012 RC with the same functionality as for VS2010. This release contains only this tool enhancement and no change in the runtime.
Important note: Visual Studio 2012 RC comes with a change in the MsBuild system, that causes the Genome builds fail (in VS2012 and also in VS2010) with the following error:
error MSB4185: The function "CurrentUICulture" on type "System.Globalization.CultureInfo" has not been enabled for execution.
This problem will be fixed my Microsoft in VS2012 RTM. In the meanwhile you have to set the environment variable “MSBUILDENABLEALLPROPERTYFUNCTIONS” to “1”. (You might need to restart Visual Studio).
Genome 4.2 SP2 (v4.2.3) released - Oct 29, 2010
With many fixes and small features!
Genome 4.2 released - Feb 10, 2010
Supports now Visual Studio 2010!
Updated roadmap - Dec 22, 2009
learn more about the upcoming Genome v4.2 release
Genome 4.1 released - Mar 31, 2009
Read more about what's new in this release.
New Product Video released - Jan 16, 2009
Get a quick overview of Genome v4.
4.2: released 10th of February, 2010 (build 184.108.40.206)
4.2 service release 1: released 17th of February, 2010 (build 220.127.116.11)
4.2 service release 2: released 26th of October, 2010 (build 18.104.22.168)
Support for Microsoft Visual Studio 2010 and .NET 4.0
It is here! This Genome release can also integrate with Microsoft Visual Studio
2010. Visual Studio 2008 is supported side-by-side with the same installer.
Improvements in testability
With this release we have improved the testability of Genome applications again.
We have made efforts to enhance unit testing capabilities and also to make the database
integration tests running faster with SQLite in-memory database. The following list
contains the most important changes in these topics, and the references to the detailed
Stub proxy generation framework
Maybe one of the most important improvements is that we have created a new stub
proxy generation framework inside the Genome Testing Extensions package. The created
stubs are completely detached from any DataDomain or Context instances, so they
behave like a value object or POCO. These stub objects can be used to provide sample
domain entities for unit testing.
IDataDomain and IConext interfaces
To make it easier to write unit test for codes that uses the DataDomain or the Context
classes of Genome, we have introduced two new interfaces (IDataDomain and IContext)
that contain all the important methods and properties of the DataDomain and Context
The business logic can be implemented in a way that it depends on the new interfaces,
and these dependencies can then be mocked out for a unit test.
The infrastructure for managing the active context (Context.Push(), Context.Current)
has been refactored to work with any IContext object, so these infrastructures can
be also used in unit tests to inject the mocked IContext object to the application
If a part of your business logic needed to create, update and delete persistent
objects, previously you had to use both the Context and the DataDomain classes of
Genome, as the method for creation (New) was defined on the DataDomain class, but
the method for deleting was defined on the Context class.
To reduce the number of dependencies of these codes and making the unit testing
easier, we have introduced an additional Delete method on the DataDomain class and
on the IDataDomain interface. The additional Delete method is equivalent to the
Context.Delete() method, and the old method can still be used.
With this change you can reduce the dependencies to IDataDomain of these business
Using SQLite in-memory databases for database integration testing
One of the main problems with writing database integration tests is that the execution
of these tests is relative slow. As Genome now provides integration with SQLite
databases, and since SQLite supports in-memory databases, we have investigated how
this can be used to increase the performance of the database integration tests,
even if the application being tested does not use SQLite database to store its data.
We have provided a sample and a step-by-step guidance how you can configure your
project for this. The result is promising: we have measured the same integration
test running almost 5 times faster with SQLite in-memory databases (running 100
tests in 7 seconds).
Support for SQLite 3 database engine (including in-memory databases)
Genome now supports SQLite 3 databases with the SQLite.NET provider for .NET.
For using SQLite support the desired ADO.NET provider (System.Data.SQLite) and the
TechTalk.Genome.SQLiteProvider.dll assembly has to be referenced in the project.
We currently support the 22.214.171.124 version of the SQLite.NET provider which is available
Genome Fluent Mapping Extensions (GFMX)
Genome Fluent Mapping Extensions (GFMX) allow you to map your persistent classes
and their members with C# (or other .NET language) code. This makes the mapping
more type-safe and provides better integration for different refactoring tools (e.g.
rename property). The extension pack can be also used as an example, how different
mapping features can be automated.
The fluent mapping still validated compile-time, so using GFMX does not increase
the application load time. Also, it can fully be combined with the classical XML
mapping (even for a class) providing full backwards compatibility and a possibility
for smooth transition to GFMX.
Changes in Oracle database support
The Microsoft OracleClient provider has been deprecated in .NET 4.0. Fortunately
this does not mean that you cannot use it anymore, but there will be no more improvements
in the provider in the further .NET releases.
We have also stared to prepare for this change. As a first step we have moved our
Oracle integration that uses the OracleClient provider into a separate assembly.
In the future we will provide an alternative Oracle provider that uses the ODP.NET
provider from Oracle.
For the users of Genome who have been using the Oracle provider, the new provider
assembly (TechTalk.Genome.OracleProvider.dll) has to be added to the project references
of the schema project. The new provider assembly is located in the Bin folder of
the Genome installation.
List of breaking changes
To support testability, a number of minor breaking changes has been introduced with
Genome v4.2. These changes have to be resolved manually. Please review the
What's New of the online help for further details.
Fixed issues (since Genome 4.1.2)
The following issues have been fixed in Genome 4.2:
- 1200: GDMX: Possibility to automatically add namespace and assembly if a property
is created in the code with SqlHierarchyId type
- 1420: Misleading error message for TransientField/LinqInitializer
- 1421: Default initialization for NOR discriminator member might cause a failure
- 1423: SqlCE and MsSql2008 providers are not signed
- 1425: CommitFailed events fired before the database connection is closed
- 1476: GMX: compilation fails with "No DataDomainSchema project found among the referenced
assemblies." on x64
- 1479: QueryProvider generated for derived interface does not implement base interface
- 1481: Prepared query with null value check generates incorrect SQL
- 1483: BoolMapping might not work with MsSql2005
- 1484: Collections of new objects having server-generated id might be cleared after
New features in Genome 4.2.3
The following smaller features have been introduced in Genome 4.2.3:
- 1489: Context.ContextType property that returns the type of the context (R/O, LRT, SRT)
- 1495: Using table-valued functions from Genome
- 1499: GMX: Support for nested types
- 1509: GHX: support for polymorphic historized types
- 1518, 1519, 1520, 1521: Mapping feature for the INotifyPropertyChanged interface
Fixed issues (since Genome 4.2.2)
The following issues have been fixed in Genome 4.2.3:
- 1494, 1533: Accessing a pinned collection might lead to context-related errors (ObjectDisposedException, #GEN101)
- 1496: GMX: Compilation errors in the generated file when upgrading to Genome 4.2
- 1497: GMX: Transformation interfaces do not support nested namespaces
- 1498: GMX: Inserting referring entities with the GMX transformation fails if the reference is not nullable
- 1500: DataDomain.Delete(Context) uses the current context
- 1503: Queries with IQueryable subqueries cannot be executed
- 1504: Using a NOR in gorup-by key causes misleading exception (This is a breaking change. Genome can be instructed to fall back to in-memory implementation for these cases (this was the default before v4.2.3). For this please set the DataDomainConfiguration.EnableEvaluatingGroupByInMemory flag.)
- 1507, 1510: Linq mapping with join causes schema load error in .NET 4.0
- 1508: Passing Mapping files through "Additional Parameters" causes compile time error for .Net 4.0 (Visual Studio 2010)
- 1512: Activation tool displays wrong grace period
- 1513: GMLX: GMLX projects does not compile under .NET 4.0
- 1514: .NET 4.0: Single/Double operators are defined as valid operators
- 1516: Boolean mapping fails when selecting boolean with ToObject in selector subquery
- 1522: Context.Pin(Set) overload throws misleading exception
- 1523: Mapping of GUID field in Oracle does not support ANSI parameters (see )
- 1524: SQLite: Mapping decimal fields in Sqlite as NUMERIC or as REAL
- 1528: Compare different subtypes lead to ambiguous operator exception.
- 1529: SQLite: GROUP BY clause is not generated
- 1530: QueryProvider for generic base interface does not compile
- 1531: LINQ: group by with having clause throws OqlParserException
- 1532: QueryProvider interface cannot inherit mapping from base interfaces