New Enhancer - The enhancer has been replaced by a new implementation based on mono cecil. This fixes all known enhancer bugs and speeds up the enhancing process as well.
Data Services Wizard integration - The Data Services Wizard is now integrated into the OpenAccess product. You can start it by using the DSL context menu.
Strings containing * or ? can now be used with Linq or OQL matches - An expression of the kind "X like ***" or "X like ???" was translated in SQL to "X like %%%" or "X like ___", therefore returning wrong results.
This has been changed so that a single backslash in front of the * and ? wildcard will escape the wildcard substitution.
L2 cache eviction fix for managed inverse collection and referenced instances - When an instance is removed from the database that is referenced by a managed inverse collection, the referencing instance was not evicted from the L2 cache.
L2 cache eviction fix for managed inverse collections and new owner - When an OrderLine gets a new Order set, the Order (old/new) instances were not evicted from the L2 cache if the collection is inverse and managed.
Added MakeDirty to the OpenAccessContext - The context now exposes the MakeDirty functionality to the end user.
LINQ: Added support for pc.collection.Count(lambda) - Added support for expressions like where pc.collection.Count(x => x.field == param).
OpenAccessDataSource is now working with the context - The OpenAccessDataSource is now working with the OpenAccess context class that is generated by the visual designer.
DSW - Auto generation of Silverlight application with Telerik Silverlight controls that consumes generated services - works with Astoria v1, Astoria v2 and Silverlight-enabled WCF Service
DSW - Added generic search method for WCF Web Services
Fixes
Dependency to VistaDB assembly prevents deployment of OpenAccess projects - The Telerik.OpenAccess.Adonet2 assembly has a dependency on the VistaDB.4 assembly. When deploying web applications, this dependency is the reason for a FileNotFoundException.
LINQ: Enumerable.Any() generates wrong SQL when used on a fk inverse collection - When a query like "var q = (from p in Scope.Extent<Northwind.Customer>() where p.Orders.Any() select p)" is made where the collection is an inverse collection (fk collection), the resulting SQL is wrong.
Workaround: Use "var q = (from p in Scope.Extent<Northwind.Customer>() where p.Orders.Count() > 0 select p)"
Using ConnectionStrings with ODP not possible - The runtime will always use the MS Oracle ADO driver, not the ODP ADO driver.
LINQ: Comparing a persistent field against an empty collection throws exception. - When a persistent field is compared against a collection, it was required that the collection is not empty. This restriction has now been lifted.
Null reference exception during database update - If a class hierarchy is mapped horizontal and a collection mapping is specified at the base class the vschema.exe or the Visual Studio build process stops with a null reference exception. It is not allowed to specify a mapping on the horizontal mapped base class. All mapping nodes have to be moved to the derived classes and the fieldname has to be prefixed by the base class name.
OpenAccess expects the VistaDB design-time license to be registered during runtime - VistaDB has a separate design-time license to be used during development and a runtime license that needs to be embedded in the application. OpenAccess access the VistaDB API/engine for various design time tools (Visual Studio integration and VSchema.exe) as well as via the OpenAccess API during runtime. During runtime OpenAccess API expects the VistaDB designtime license to be registered.
The OpenAccess designtime tools should use the VistaDB designtime license and the runtime API should rely on the VistaDB runtime license to be available.
OQL: NVARCHAR comparisons are not handled correctly. - When filtering is done against a NVARCHAR field, the resulting SQL should place an 'N' before the string that is compared against.
Example: SELECT...WHERE p.Name = 'Александър'. This should be N'Aлександър'.
DSL: OpenAccess generates un-compilable code when the tables reside in multiple schemas. - The attributes generation has some glitches that are only visible when generating models that contain multiple schemas. We generate something like:
Table("Address"SchemaName = "Person", )] and it should be: Table("Address", SchemaName = "Person")]
Null reference exception in the MetadataConverter while reading Oracle schemas. - The ParameterDefinitionsOld collection of the relational procedure is null.
ObjectContainer.CopyTo throws null reference exception - If an existing object in the container has a collection of other persistent objects and this collection is set to null instead of referencing an empty collection, a null reference exception is thrown in CopyTo or CommitChanges.
Attributes metadata source does not filter out the events from the persistent classes. - Durring metadata collection, event members are read as normal fields of persistent classes. We must filter out every delegate member of the persistent classes.
OpenAccess throws exceptions when we try to persist an object that contains a decimal property. - The reason for the behavior is that the schema reader returns "money" columns with 0 Length. That is different from the default value but we must avoid serializing it nevertheless.
DefaultMapping maps a 'nullable' column to a property of 'non-nullable' CLR Type. - The TypeResolver returns the value based on the underlying type, disregarding the nullability of the column.
One-to-many relations are not always correctly resolved when attributes mapping is used. - The creation of the inverse collections depends on the existence of the master members. They should always be read after we are sure all master members are resolved.
LINQ: Accessing the Value property of a query parameter leads to an exception - When accessing the Value property of a Nullable<X> instance that is used a as query parameter, an exception is thrown.
Workaround: Avoid using nullable query arguments.
Error with OpenAccessDataSource and RadGrid when filtering on decimal field is being performed - In case of filtering in RadGrid binded to OpenAccessDataSource on decimal field a Telerik.OpenAccess.Exceptions.QueryException is being thrown.
VistaDB assembly requiered in .NET 4.0 asp application - If you are using OpenAccess with .NET 4.0 and the ajax script manager the VistaDB assembly is necessary. This dependency has to be removed.
L2 Cache Synchronization failure - The L2 cache synchronization using MSMQ fails immediately due to a timeout exception.
Many-to-many collections are not handling CUD operations on the slave end - In an m:n association, if one adds a new persistent object in the collection of the slave member, the objects is persisted, but no entry in the join table is being written.
LINQ: InvalidCastException when anonymous types are used coming from multiple dynamically created sources - When LINQ queries are generated by tools that themselves compile the linq expressions, anonymous types are created in a duplicate fashion (same structured type can exist multiple times in the process). This can generate invalid cast exceptions when reading the LINQ result set.
Inability to pass Unicode strings to SQL queries and stored procedure invocations - When using SQL queries or stored procedures through the IObjectScope.GetSqlQuery() method, there was no way to specify that a passed string (or an out parameter) should be handled correctly for non-western character sets (like arab, mahrati, bulgarian). The strings were passed as VARCHAR instead of a Unicode capable type like NVARCHAR/VARCHAR2.
In order to use unicode string parameters, one must specify "NVARCHAR p1" for an input parameter with name p1 and "OUT.NVARCHAR p2" for an output parameter p2 in the type declaration of the GetSqlQuery() method.
OpenAccessDataSource is not using the Insert or Update parameters when those operations are being executed. - The OpenAccessDataSource exposes the Insert and Update parameters as well as the Where and Order By, but it only uses the later two for SELECT operations. The Insert and Update parameters are not taken into a count when the corresponding operations are being executed.
LINQ: Using ternary operator (x ? t : f) fails when t and f compare for equality - When using the ternary operator with an equality operation in the true or false part, the generated SQL is wrong.
LINQ: Runtime support for DateTime.Date property; Throwing an exception when DateTime property is not supported. - When the property DateTime.Date is accessed, the correct SQL code for extracting the date part is not generated and no exception message appears.
DSL: Potential difference between enhancement and runtime settings leading to unloaded primitive fields - When the new designer is used, there is a potential difference in the way default fetch group fields are calculated during runtime and designtime. This can lead to incorrect values (nulls) showing up as the field content.
MSDE not detected as free database - The Microsoft Desktop Engine (MSDE) is a free database and the OpenAccess express edition should support it.
Serialize to blob not working with new metadata - If a field is marked as SerializeToBlob in the new metadata definition the enhancer throws a type not supported exception if the referenced type is not persistent.
Persistent Types are not always correctly resolved in Visual Basic projects - The problem comes from the fact that the full name of the clr types in Visual basic is different than the one in C#. In visual basic, the namespace is different than the one in the VB .NET code, the difference is that in the runtime the default project namespace is added to as prefix to the class namespace as well.
The namespace of the OpenAccess classes is not changed when the user changes the namespace of the model from the model settings dialog - The namespace of the classes remains the same even if they have been in the default namespace and the user has changed that namespace.
Null reference exception while reading Oracle schemas - It is not possible to read Oracle schemas with the default driver when adding a Domain Model item to a project - the SchemaReader throws an exception. Workaround: the ODP driver should be used instead.
The Add new item wizard does not allow to select Oracle ODP connections - When a connection using the ODP driver is selected on page one, advancing to page two is not possible.
DSL: Adding self-reference associations to a class is not possible - When a class is not associated with a self-reference constraint, adding such relation is not possible in the designer.
Details editor: The list view in the relationships page should not allow sorting - The listview items are not ordered properly when sorting by column is applied.
DSW - Second screen will be shown only if you have more than one RLINQ model in the DAL
DSW - Fixed setting of Astoria v2 required environment variables