Genome Visual Studio 2017 Integration Update v1.0 release - Friday, April 07, 2017
Starting with Visual Studio 2017 the Genome Visual Studio integration is distributed as separate Visual Studio Extension. The extension can be downloaded from the professional and express download sections. The v1.0 version includes support for Data Domain Schema projects (mapping project, mapping files). Support for Genome Messaging Extension (WOPii) will be included in the next version.

Genome v4.2 SP10 released - Wednesday, May 18, 2016
Genome v4.2.11 provides fixes for the integration to Microsoft Visual Studio 2015. With the update DataDomain schema projects can be compiled to .NET 4.6.1 and .NET 4.6.2 as well. The service pack contains a few minor fixes in the Sqlite provider and in the runtime too.

Genome v4.2 SP9 released - Tuesday, September 22, 2015
Genome v4.2.10 provides integration to Microsoft Visual Studio 2015 with the same functionality as for VS2013. Also with this update the DataDomain schema projects can be compiled to .NET 4.5.2 and .NET 4.6 too. The service pack adds support for PostgreSql database and contains a few minor fixes in the runtime too.

Genome 4.2 SP8 supports VS2013 and .NET 4.5 - Thursday, October 24, 2013
Genome v4.2.9 provides integration to Microsoft Visual Studio 2013 with the same functionality as for VS2010 and VS2012. Also with this update the DataDomain schema projects can be compiled to .NET 4.5 and .NET 4.5.1 too. The service pack contains a few minor fixes in the runtime too.

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).

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 descriptions.

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 classes.

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 logic.

IDataDomain.Delete() method

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 logic methods.

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 1.0.65.0 version of the SQLite.NET provider which is available here:

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 during creation

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 members

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 flush

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)

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.)