AdFactum ObjectMapper .NET Blog

Official blog of the AdFactum ObjectMapper .NET

Archive for the 'Releases' Category

New Release – AdFactum ObjectMapper .NET 2.3.3903.0

Posted by Gerhard Stephan on 3rd April 2009

Today I release a small patch that fixes some bugs in the ObjectMapper .NET.

The first is, that the ObjectMapper .NET can now extend SubSelect in order to use GROUP BY within the SubSelects. That is for example, if you use Projections within a SubSelect. In addition to that I solved a failure that ended up in wrong sql creation, because the property projection had been wrong mapped. That was also a problem when using SubSelects.

Furthermore I fixed a long time undetected bug. The WriteSchemaDif Method of the ObjectMapper class had been wrongly mapped the corresponding WriteSchemaDif Method of the persister, which leaded to wrong results when calling the WriteSchemaDif Method of the ObjectMapper class.

And last but not least, the Orm API Relations have been adjusted to get a better understanding for human people who read the data.

That’s all for now. Enjoy the new version and the perfect weather outside.

– Gerhard

Posted in Releases | No Comments »

New Release – AdFactum ObjectMapper .NET 2.3.3815.0

Posted by Gerhard Stephan on 16th March 2009

It’s time to release a small patch that fixes two bugs regarding Projection and Grouping SQLs.

The first is a bug that appeared when trying to create a SQL statement that has conditions that are placed in a WHERE Clause and conditions that resists within the HAVING Clause. In the old version it was not possible to create such statements. After the current patch it’s possible.

In order to use conditions within the WHERE and within the HAVING Clause, the ICondition owns a property named "ConditionClause". This property can be used to specify wheather a condition is placed into the WHERE or the HAVING Clause. A ConditionList ( and that is new ) is defined as "Undefined" which means, that it can have childs that are placed in the WHERE or in the HAVING Clause.  Using this trick allows you to pass the Select Method of the ObjectMapper .NET a ConditionList with child conditions that are set into the WHERE or in the HAVING Clause.

Furthermore a bug has been fixed that lead to wrong SQLs when trying to place a SubSelect into a Condition that queried a Projection Class of the same type as the SubSelect. In that case, the subselect used the aggregation methods of the surrounding Projection class. That bug has been fixed. The SubSelect does now ignore the surrounding projection class as you would expect.

For a better integration the INativePersister interface has been extended for creating and managing IDbCommand objects.

Furthermore a new functionality has been added to enrich an existing handwritten SQL with Server Side Paging informations. This feature is still under development and does not work with all persisters. But there’s more to come.

Wish you happy coding.
– Gerhard

Posted in Releases | No Comments »

New Release – AdFactum ObjectMapper .NET 2.3.3013.0

Posted by Gerhard Stephan on 13th July 2008

This release covers a lot of smaller and bigger bug fixes for the Microsoft SQL Server 2000 and 2005.

Some Statements could not be executed for the Microsoft SQL Server 2000 by the SqlFile class, because the SQLs that have been executed all ends with a semicolon. Microsoft SQL Server 2005 doesn’t care about, but Microsoft SQL Server 2000 ends up with a failure. This bug has been fixed by removing the semicolon at the end for all databases but Oracle.

The integration check for Microsoft Access failed when a field had a property length greater than 255. Thus forces the Microsoft Access Persister to use a MEMO field, but the integration check did not care about that and throwed a failure, because the max size of a memo field differed to the max size of an integer value. This bug has been fixed by updating the integration check which now takes care to that issue.

Another bug was that the SqlTracer did not take care of the formatting of SQL Statements for the Microsoft Sql Server. It was not everytime possible to use the trace output as a direct input for SQL queries used by the Microsoft SQL Server. This problem has been fixed by changing the parameter formatting for the Microsoft SQL Server.

Furthermore there had been a failure, if the SQL Tracer outputs SQL Statements which uses a parameter more than one time. As a result the second parameter use haven’t been replaced with the concret value by the SQL Tracer. This bug has also been fixed now.

The fith bug has been fixed for the Microsoft SQL Server 2000. The Microsoft SQL Server 2000 has problems to parse a select statement like SELECT TOP(x). The select statement has been changed so that it fits the needs for the Microsoft SQL Server 2000.

If you find some more bugs, please don’t hesitate to report them into the forum of the ObjectMapper .NET.

Best regards
Gerhard Stephan

Posted in Releases | 1 Comment »

New Release – AdFactum ObjectMapper .NET 2.3.2619.0

Posted by Gerhard Stephan on 19th March 2008

This Release is a pure bug fixing Realease. It covers three major bug fixes.

At first, it fixes a memory leak that occures when calling the Method "BaseCache.ClearAllCaches". Because this is not obvious for all users, I have to explain that this method has been called every time the ObjectMapper class has been initialized with a version information greater than zero.

The second fix is a multithreading bug that causes the mapper to throw unmotivated Exceptions, like "NoPrimaryKeyFound" Exception and "CollectionHasBeenModified" Exception. But this only occured when using the ObjectMapper .NET in a strongly multithreaded environment.

The last fix, fixed the update and delete sql statements of dictionary types (e.g. SortedList and Hashtable). Due to that the link table had a wrong primary key definition and that caused the update of the link table to fail.

Hope you enjoy the new version.

– Gerhard

Posted in Releases | No Comments »

New Release – AdFactum ObjectMapper .NET 2.3.2607.0

Posted by Gerhard Stephan on 7th March 2008

Today, the AdFactum ObjectMapper .NET reaches the next evolution level – hmm – I mean: the next release. But without joking, it’s a big step to a full integrated LINQ support and a big step further to complete the base functionality of the AdFactum ObjectMapper .NET.

First I implemented the base aggregation functions like Min, Max, First, Last, Sum and Count and grouping functionality with using the GroupBy Clause. This functionality can be used with projection classes or directly using the new Linq Syntax. The only thing that is still missing, is the Having Clause which caused me a lot of headache. But I’m confident that I can implement that feature in the next release.

As a second new feature, the AdFactum ObjectMapper .NET now offers Unicode support for Oracle and Microsoft SQL Server. To use this new feature, the properties must be tagged with an [Unicode] attribute.

Hope you enjoy the new version.

– Gerhard

Posted in Releases | No Comments »

New Release – AdFactum ObjectMapper .NET 2.2.2519.0

Posted by Gerhard Stephan on 19th February 2008

This release covers two bug fixes. The first one fixes a bug within the projection query engine, which prevents selecting a projection multiple times due to a null pointer exception that has been thrown by the ObjectMapper .NET. The second one fixes the short name generation in the repository part of the ObjectMapper .NET.

I think that is the last bug fix release before the next bigger release introduces many enhancements to the AdFactum ObjectMapper .NET.

For the record:

  • It’s planned to support the aggregation functions, like min(), max(), sum() and so on.
  • It’s planned to support 1 to many relations between parent and child, instead of only supporting the n:m relations.

So, I hope you enjoy the calm before the storm (before the next release 😉 and wish you a successfull week.

– Gerhard

Posted in Releases | No Comments »

New Release – AdFactum ObjectMapper .NET 2.2.2430.0

Posted by Gerhard Stephan on 30th January 2008

This version contains two new changes.

The first, is included because of the backward compatibility to earlier versions where the AdFactum ObjectMapper .NET did only support GUID types as Primary Keys. To satisfy our customers which upgraded to the new version the last days, I included a backward compatibility modus. The rule: If no primary key is defined within an interface, assume that the primary key must be a GUID.

The second new feature is a new overload to the ExecuteScript Method, which now takes an OnSqlFileFailed Delegate to handle exceptions thrown when executing the sql file.

Hope you enjoy the new version.

– Gerhard

Posted in Releases | No Comments »

New Release – AdFactum ObjectMapper .NET 2.2.2418.0

Posted by Gerhard Stephan on 18th January 2008

Four days after the last release I have to publish a small bug fix for all oracle users.

The last change, adding the ROWID to all pageselects, did not work, when querying a database view. And that’s correct, because a database view does not offer a ROWID. So what did I change? It’s now possible to define, that a .NET class is mapped to a database view. This can be done by using the new attribute called "View", instead of using the attribute "Table".

As a second bugfix I changed WithClause. Using the WithClause in prior versions could force a cartesian product, because all tables of the With-Clause have been exposed to the Parent SQL, which is an unwanted behaviour.

Hoping that this will be the last hotfix for this month I wish you a great weekend.

– Gerhard

Posted in Releases | No Comments »

New Release – AdFactum ObjectMapper .NET 2.1.2414.0

Posted by Gerhard Stephan on 14th January 2008

Today I present the first release of the AdFactum ObjectMapper .NET within the new year. So what does it cover? This release is one of the big one and covers a lot of minor changes and one or two bigger issues.

First of all I added a new persister especially for the old Sql Server 2000 version, which does not support the analysis functions used by the paging algorithm. As another big new feature, I added a "DeleteRecursive" method which allows to delete object trees by using a given hierarchy level.

The minor features are less impressive, but important to know:  Many method signatures have changed from using the old collections to the new generic collections. That makes it more easy to use this methods. Furthermore I changed a lot of code fragments so that they are FxCop conform and I reduced duplicated code fragments.

Following bugs have been fixed:

When using the Oracle Paging algorithm there has been a bug when paging a sorted list with identical sort values. Oracle retrieved differend row data. To solve this issue the ROWID has now been added as an additional sorting column.

The SQL Persister for Windows CE is now able to using SelectDistinct (which causes an error in earlier versions). Virtual Links are now correctly quoted, so that reserved words can  be used for it and SelectIds on XmlPersister will now work even if the target object is not defined within the XML file.

So that’s a lot stuff. Hope that everything works for your suffiency. If not, don’t hesitate to write within the forum or answer to this blog entry.

Wish you a great new year.

– Gerhard

Posted in Releases | No Comments »

New Release – AdFactum ObjectMapper .NET 2.0.2307.0

Posted by Gerhard Stephan on 7th December 2007

This version covers one new query condition, with that you can use the Sql  "with clause" sub query replacement.  That feature gives you a powerful optimization feature, if you have many sub selects (SubSelect) within your sql query. In best case, these sub selects can be reduced to one, when using the "with clause" feature.

More information about using the withclause can be found here:

So, I wish you lot of fun with the new version.

– Gerhard

Posted in Releases | No Comments »