Up DevForce release notes

6.0.7 release notes

Last modified on August 15, 2012 17:21

This release of DevForce 2010 includes a large number of enhancements and bug fixes.
DevForce 2010 6.0.7 now checks for version compatibility between the generated business object code and the current runtime. This check will throw an exception at runtime during the construction of any EntityManager if your locally generated code is out of date. You must regenerate your model to avoid this message. Please refer to the New and improved product features section for more details.

Breaking changes

  • The TransactionSettings.Default now defaults to using a TransactionScope with all queries and saves. If this causes any problems you may modify the default by setting TransactionSettings.Default = new TransactionSettings (System.Transactions.IsolationLevel.ReadCommitted, new TimeSpan(0, 1, 0), false);
  • If you are sub-typing the AspAuthenticationLoginManager: the LogoutCore virtual method now takes an IPrincipal. See B1638.
  • If you are sub-typing the DomainModelTemplate for custom code generation: the MaxClassesPerFile property was removed; use the TemplateSettings.MaxClassesPerFile property instead. The OMFileType enumeration was changed to a Flags enumeration.
  • If you enable OData in your entity model in a VB project – To avoid a collision with the default parameterless constructor needed by the OData provider, the first parameter to the following constructor is no longer optional: Public Sub New (ByVal shouldConnect As Boolean, Optional ByVal dataSourceExtension As String=Nothing, Optional ByVal entityServiceOption As EntityServiceOption=EntityServiceOption.UseDefaultService, Optional ByVal compositionContextName As String=Nothing)

Defect Repairs

  • The Null Entity could be added to a RelatedEntityList - and shouldn't have been able to. [B1605]
  • Improved Intellisense and exception text for the EntityManager InvokeServerMethod and InvokeServerMethodAsync calls if it fails due to a badly formed type name parameter. The async method now “fails fast” if the type name is invalid, and returns the error to the async handler. [B1607]
  • The DiscoverableKnownType attribute can now be applied to an enum or struct, in addition to a class. [B1611]
  • An async navigation involving a scalar 1-1 relation would throw if a pending entity was not found. [B1612]
  • After updating the ProductKey, running the setup and choosing Modify/Repair will throw an error/not install Silverlight Assemblies. [B1613]
  • Fixed a problem where reference fixup was not performed when an ImportEntities was called, resulting in unnecessary fetches to the database. [B1615]
  • An Entity.RejectChanges call on an entity with many-to-many changes did not revert any many-to-many changes. [B1618]
  • ObjectDataSource (ODS) filtering can produce a duplicate user state error. [B1620]
  • Serialization problems would occur when querying with an anonymous projection that included custom data transfer types with static properties. Static properties are now ignored on these types for serialization purposes. [B1622]
  • Additional fixes to address the DTC escalation problem. Changed the default to use a TransactionScope with all queries and saves. [B1623]
  • Validation of an instance of a complex type was not informing parent entity of any errors encountered. [B1625]
  • RangeVerifier constructor parameters were incorrectly documented. [B1626]
  • The removal of an entity followed by requery for that same entity could cause previously detached children to show up as related entities. [B1627]
  • Changing a navigation property, via its foreign key, within an EntityServerSaveInterceptor could cause the corresponding navigation property to be incorrectly updated. [B1628]
  • Entities deleted in an EntityServerSaveInterceptor were not being merged back into client cache correctly. [B1629]
  • Completion was never signalled on a parallel Coroutine when all operations completed synchronously. [B1630]
  • A query with a PreserveChanges QueryStrategy could overwrite navigation properties under certain conditions. [B1631]
  • Improved error messages for connection and login failures due to problems with custom types (Silverlight). [B1634]
  • Building up a detached entity graph with more than a two level hierarchy involving multipart primary keys could cause an „Invalid operation exception‟ when entities were finally added to an EntityManager. [B1635]
  • Improved each of sub-typing the AspNetAuthenticatingLoginManager. Added new virtual methods CreatePrincipalCore and CreateIdentityCore; exposed additional properties which were previously private; improved Intellisense. [B1638]
  • A query with an „Include‟ of a parent relation was bypassing the Include when the child was in a modified state. [B1639]
  • SaveChangesAsync would throw an exception immediately if an EntityManager.Saving event handler threw an exception. The exception now propagates to the async callback like all other exceptions. [B1641]
  • Validatation metadata properties on a nested Metadata class were required to be static; they no longer are. [B1642]
  • A removal followed by a re-add of the same related object in many to many relation would cause a save failure. [B1644]
  • Changing a navigation property, via its Foreign Key, was not updating the corresponding EntityReference.IsLoaded flag when the navigated to entity was not present in the cache. There was a related bug involving requerying for the entity when in this state. [B1645]/[B1646]
  • Silverlight Business Application Templates - AuthenticationManager.Current.User was fixed to never return null. If the user is not logged in the anonymous user is returned. The data type of this property was also changed from IPrincipal to UserBase. [B1647]
  • The StringVerifierAttribute.Required attribute was causing property setters to fail with an exception when the corresponding property was set to null. The correct behavior is to allow the „exception‟ caused by the set to be handled by the DevForce validation engine instead. [B1648]
  • When using a „Fake‟ EntityServerBackingStore, the AsScalarAsync().Count() query against a many-many relation would always return 0. [B1649]

New and improved product features

  • Beta – An EntityManager may now be used as a WCF Data Services (OData) data source for both read and write access. You must set the “OData Enabled” flag in the EDM designer to enable this feature. When set, additional attribute markup is added to types in your generated model, references to Data Services assemblies are added to the model project, and a file named <EntityManager>_IUpdatable.cs (.vb) will be added to the project. This file contains the OData IUpdatable implementation allowing for CUD access, and will be generated once only. Refer to Enabling OData more information. [F1359]
  • Simplified installation process from six screens to three. [F1485]/ [F1558]
  • New PropertySortSelector class and new Queryable and EntityQuery extension methods that allow construction of queries with dynamic property based sorting. Where our existing PredicateBuilder and PredicateDescription classes allow dynamic construction of a LINQ Where clause, the PropertySortSelector allows dynamic construction of OrderBy, OrderByDescending, ThenBy and ThenByDescending clauses. For more information, please see the dynamic-orderby. [F1491] var ps1 = new PropertySortSelector(typeof(Customer), "Country", ListSortDirection.Descending); var q1 = myEntityManager.Customers.OrderBySelector(ps1));
  • Set Silverlight version in a project generated by a DevForce Silverlight template to the version installed on the developer‟s machine. You‟ll see this in the “minimumRuntimeVersion” set in the Silverlight plugin definition in the default.aspx. [F1493]
  • Added ability to get list of all EntityTypes involved in an EntityQuery via the GetReferencedEntityTypes() extension method on IEntityQuery. This will return any of the types referenced by the query itself, as well as those involved in any joins or subselects. This does not include “Included” types at this time. [F1495]
  • Added a check for version compatibility between generated business object code and the current runtime. This check will emit the following message at runtime during the construction of any EntityManager if your locally generated code is out of date: [F1523] An entity model in the '{0}' assembly was generated by a different version of DevForce that is not compatible with the current version. Please regenerate the entity model base classes by resaving the EDMX in Visual Studio.
    Model template version: {1} Current template version: {2}
  • An IEntityQuery.OfType<T> extension was added to allow simpler use of the OfType extension without having to cast the result back into an EntityQuery<T>. [F1526]
  • A free form VerifierResult can now be created and associated with a specific property independently of any verifier. These results can then be added to any entity‟s ValidationErrors collection. [F1539] var vr = new VerifierResult(VerifierResultCode.Error, "Bad birthdate", "BirthDate");
  • Support to a new InList FilterOperator in the PredicateBuilder (Contains in LINQ). [F1540] PredicateBuilder.Make(typeof(Customer), "Id", FilterOperator.InList, listOfValidIds));
  • Additional extension methods and overloads to make use of the PredicateDescription class simpler. [F1541]
    EntityQueryFilterCollection
    public void AddFilter(IPredicateDescription pd, bool canReplaceIfAlreadyExists = false); IEntityQuery extension method
    public static IEntityQuery<TSource> Where<TSource>(this IEntityQuery<TSource> source1, IPredicateDescription predicateDescription); 
    Queryable extension method
    public static IQueryable<TSource> Where<TSource>(this IQueryable<TSource> source1, IPredicateDescription predicateDescription);
  • Added support for the IEditableObject interface on Detached entities. [F1542]
  • Improved sort order for DevForce Visual Studio templates displayed in the New Project dialog. [F1543]
  • VB versions of Silverlight Business Application templates are now available. [F1547]
  • Added AsScalarAsync.Any() and AsScalarAsync.All() methods. [F1548]
  • Changes to the Silverlight Business Application templates: fixed issues where resource errors caused pages not to load in a designer; added MultipleSiteBindings enabled flag to web.config; added Forms cookie name in web.config; modified VerifiableObject class to support instance-level verification; XML comment cleanup. [F1551]
  • Support filtering in the EntityQueryPagedCollectionView (Silverlight). Use one of the SetQueryFilter overloads to pass filter criteria to the view. [F1556]
  • We now offer a full implementation of INotifyDataErrorInfo and IDataErrorInfo for Complex Types. This means that any validation errors that occur on a complex type will perform notification thru both interfaces on both the complex type as well as its parent entity. [F1557]
  • All server-side validation errors that occur during a Save now flow back through to the client. Validation errors will now show up on the individual entities and will cause UI updates if data-bound. [F1561]
  • VerifierResults are now serializable. [F1561]
  • An optimization was added that internally caches compiled local queries and reuses the compiled plan for subsequent executions. This means that if you hang onto a query object, any executions of that query against the local cache after the first may be much faster. The amount of improvement will be related to how long compilation of the query takes versus the time taken to execute the compiled Func<>. Expressions that involve small datasets, hence small execution times, tend to benefit the most. [F1570]

Known limitations

Anonymous projection queries to an OData service backed by the EntityManager are not currently supported.

Created by DevForce on January 24, 2011 09:40

This wiki is licensed under a Creative Commons 2.0 license. XWiki Enterprise 3.2 - Documentation. Copyright © 2015 IdeaBlade