Up DevForce release notes

6.0.9 release notes

Last modified on August 15, 2012 17:20

Important:
To upgrade to this release, you must regenerate your code from the EDMX. Do this by re-saving the EDMX or by right-clicking the .EDMX.TT file and selecting Run Custom Tool

If you forget to do this, you will get a compiler error message: The name 'GetDefaultEntityManager' does not exist in the current context.


Breaking changes

  • Silverlight only - If you've previously used the system.serviceModel section to configure communications between a Silverlight client and the EntityServer on only the client or only the EntityServer, you will need to either use the serviceModel configuration for both client and server, or modify the binding to reflect the default use of compressed messages. [F1187]
  • EntityQuery now implements the ITypedEntityQuery which in turn extends the IEntityQuery interface. The intent of this interface is to allow compile time checking of various IEntityQuery extension methods such as Filter, Include and GetReferencedEntityTypes that really only worked for subtypes of EntityQuery. Previously these methods would throw a runtime exception if called with an IEntityQuery type that was not an EntityQuery<T>, (this meant queries of types such as StoredProcQuery, PassthruESQLQuery and EntityKeyQuery). With this new interface the Filter, Include and GetReferencedEntityTypes methods are now extensions of the ITypedEntityQuery interface instead of the IEntityQuery interface. This change effectively converts a runtime exception into a compiler exception. No functionality is lost. [F1623]
  • We no longer generate a strongly typed DefaultManager property in generated EntityManagers. This property was causing confusion because it returned the same value as the EntityManager.DefaultEntityManager but with a more specialized type. Although we recommend against it, if you really still want this property it can be added as a custom property in a partial extension class to the strongly typed EntityManager class generated by DevForce. Models generated with previous releases of DevForce 2010 will raise a compiler exception because of this change. Such models must be re-generated before the solution can be compiled.[F1640]
  • The EntityAspect.GetValue method called with EntityVersion.Current on an object within the IEditableObject.Edit proposed state will now return the pre-proposed values of the specified property. This previously returned the proposed value. While this is a breaking change, it is a very rare condition. [F1644]
  • The RefetchEntityAsync and RefetchEntitiesAsync API have been changed to return an EntityRefetchOperation instead of an EntityQueryOperation. This change was made because these methods can now involve more than one query because of Refetch batching (introduced in 6.0.8) and because there are properties relevant to refetching that are not relevant to a standard query and vice versa. [D1710]
  • The EntityManager.DefaultEntityManager will now throw an exception when accessed in any server side process. This is both for security and to insure safe threading of these processes. Use of the DefaultEntityManager previously allowed for data to be shared between server threads. The EntityManager is not thread-safe, and use of a shared EntityManager on a multi-threaded server is discouraged. [D1718]
  • The IDataSourceKey interface was moved from the IdeaBlade.Core namespace to IdeaBlade.EntityModel namespace. The class is still in the IdeaBlade.EntityModel assembly. [D1731]

Defect repairs

  • Added a runtime check and explanatory exception to the EntityQueryBuilder.BuildQuery overloads that take EntityKeys for more than one entity type. Previously keys of different types could be passed into these methods with indeterminate results. [D1679]
  • The DynamicXap.Loaded event now provides DynamicXapLoadedEventArgs which indicate whether the load completely successfully or the error if it failed. A Name property was added to the Xap. The CompositionHost now recomposes when either Add(AssemblyCatalog) or Refresh is called. [D1702]
  • Silverlight – The main application XAP can now use Application Library Caching. [D1703]
  • Fixed a bug that resulted in a Duplicate Key Error when deleting and then creating a similar entity with the same unique index but different key within the same transaction. This fix actually involves changes to the way that DevForce processes transactional saves that involve mixed adds, deletes and modifications. Previously DevForce processed all adds and modifications before any deletes, as two separate transactions within a larger transaction. DevForce now preprocesses adds, modifications and deletes so that the Entity Framework can use its own internal entity level topological sort to determine save order. This means that any SaveChanges call to a single database will now only involve a single database transaction. The DTC will still be enlisted for SaveChanges calls that cross multiple databases. [D1705]
  • Fixed a bug where code generation of a single project with multiple EDMXs could, in some cases, cause a license key exception. [D1708]
  • The EntityManager.AttachEntity method was not clearing original values for objects that had previously been detached and then reattached. Original values are now cleared. See feature F1660 for new optional parameters to the AttachEntity method to allow attachment of modified entities. [D1713]
  • Silverlight – The assemblies in the XAP are now loaded in reverse order to avoid assembly load failures due to missing references. [D1715]
  • Scalar queries against a remote EntityServerFakeBackingStore no longer fail. [D1716]
  • Silverlight queries using PredicateDescriptions with more than 512 predicates no longer throw a serialization exception. (Although we still recommend against such queries.) [D1719]
  • For an EntityServer hosted in IIS, the application name can now contain a space. [D1722]
  • A SqlNullValueException is hidden and thrown as a NullReferenceException when trying to iterate over a query result (or calling GetEnumerator). A fix is provided to display a better exception message. [D1727]
  • The EntityManager.AuthorizedThreadId is now set on EntityManagers that are created via EntityManager constructors that take another EntityManager as an argument. These were previously given a null AuthorizedThreadId. [D1733]
  • Any modifications made to the IEntityQuery.Tag property in a EntityManager.Querying event are now passed properly thru to the EntityManager.Queried event. Previously, these changes could be lost is some cases. [D1735]

New and improved product features

  • Communications between a Silverlight client and the EntityServer are now compressed by default. DevForce now uses the DotNetZip GZipStream instead of the standard .NET GZipStream class for all message compression. [F1187]
  • A new static property IdeaBladeApplication.IsExecutingOnServer has been created. This can be used in any application to determine if the code currently executing is within an EntityServer process. This property works in both 2-tier and n-tier environments. [F1507]
  • We now support anonymous projections in OData, enabling dynamic queries that return a subset of an entity's properties. [F1577]
  • All dynamic query methods now implement fail fast type checking with explanatory error messages. [F1609]
  • The base PredicateDescription now supports the 'Not' operation. [F1624]
  • The EntityQueryPagedCollectionView now raises a PageLoadError event for errors which occur when the collection is loaded or paged. [F1625]
  • The EntityManager.DefaultManager has been deprecated. We plan on removing this property after January 1st 2012. In order to facilitate this we have added a feature whereby you can set the EntityManager.DefaultManager to null and any subsequent read accesses of the EntityManager.DefaultManager property will throw a descriptive exception. This property has been
    deprecated because IdeaBlade discourages the use of a shared singleton EntityManager, and because it can cause subtle code errors. These errors typically occur where a developer constructs a query without an associated EntityManager and then executes that query. In these cases the DefaultManager is used, often inadvertently from the developers perspective, and the code seems to work until the application gets changed to use more than one EntityManager. [F1631]
  • Dynamic query support has been enhanced with the ability to support the dynamic versions of most of the LINQ stack. This includes methods such as Select, SelectMany, GroupBy, Take, Skip, Distinct, Contains, etc. More detail on Dynamic Query support may be found in the DevForce Resource Center under the topic of Dynamic Queries. [F1632]
  • All DevForce anonymous types, created as a result of queries with anonymous projections, now implement value equality. This was necessary in order to correctly implement the IQueryable Distinct and GroupBy operators on anonymous types. [F1633]
  • The CompositionHost.Recomposed event now provides RecomposedEventArgs which indicate the XAP or assembly which triggered the recomposition, or the exception if an error occurred. [F1628]
  • The EntityWrapper.EntityAspect property is now marked with [Display(AutoGenerateField=false)] in all versions of DevForce. [F1635]
  • The compression level used in client to EntityServer communications is now configurable using the new CommunicationSettings.Default class. [F1637]
  • A [Key] attribute is now generated onto all properties in the Entity Model. [F1643]
  • Re-label the “OM Designer Extension” as “DevForce EDM Designer Extension”. [F1647]
  • Additional Coroutine.Start and Coroutine.StartParallel overloads added which accept a list of asynchronous functions. These overloads allow the Coroutine to be used in Visual Basic applications without the need of a helper class, or any application which needs to build up a collection of asynchronous functions instead of using an iterator block. [F1654]
  • The EntityKey.ToQuery and EntityKey.ToKeyQuery methods now provide an optional EntityManager parameter to associate the resulting query with a specified EntityManager. [F1656]
  • The EntityManager.AttachEntity method now takes an optional EntityState parameter. This allows entities to be added to an EntityManager in any of three states: Added, Modified, or Unchanged. The default value for this parameter is Unchanged. Calling AttachEntity with a value of EntityState.Added is exactly the same as calling EntityManager.AddEntity, and by using EntityState.Modified entities will be marked as modified after being added and any original values on these entities will be retained. [F1660]
  • The Visual Basic versions of the Silverlight Business Application templates now use the new Coroutine methods. [F1661]
Created by DevForce on March 23, 2011 16:26

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