Last modified on September 06, 2012 12:27
This release of DevForce 2010 includes a large number of bug fixes and enhancements.
Breaking changes
- With the fix for [D2027] the Login(sessionKey) call will now throw a LoginException if the session key is not found. A session key might not be found if the session has been timed out by DevForce after a period of inactivity, if the application pool has recycled, or if run against another EntityServer in a load balanced environment. When the session is not found, a full Login should be performed.
- As part of the changes to support Visual Studio 11 Beta and componentized installation [F1921], a number of assemblies are no longer installed into the Global Assembly Cache. These assemblies are: IdeaBlade.EntityModel.Edm.Metadata, IdeaBlade.VisualStudio.Build.Tasks and IdeaBlade.VisualStudio.OM.CodeGenerator.
- If you have customized the code generation templates you can find IdeaBlade.VisualStudio.OM.CodeGenerator.dll in the folder to which the DevForce EDM Extension was installed, which is usually under C:\Users\<youraccount>\AppData\Local\Microsoft\VisualStudio\10.0\Extensions.
- The IdeaBlade.EntityModel.Edm.Metadata assembly is sometimes incorrectly referenced by applications, incorrectly because it is not ever used by DevForce at runtime, and you can safely remove the reference. In the rare event that your application does directly use this assembly, you can find it in the DesktopAssemblies subfolder of the DevForce installation folder.
- Several shortcuts on the DevForce Tools Start menu have been removed. These are: DevForce EDM Designer Extension and the Template Installer. The tools are still available; see here for more information on how to use them.
- If you migrate your application to Visual Studio 11 Beta the .tt files for your EDMX models will be incorrect and you’ll receive an error message that IdeaBlade.VisualStudio.OM.CodeGenerator.dll could not be found. You can resolve this by either 1) deleting the .tt file and resaving the EDMX file, or 2) modifying the .tt file contents to reference the VS11 version of this assembly: IdeaBlade.VisualStudio.OM.CodeGenerator.11.0.dll.
- The generic PropertyInterceptorAction constructor now requires a class as its generic type argument instead of an interface. For example,
C# | var pia = new PropertyInterceptorAction<IPropertyInterceptorArgs<MyType>>(…) |
would change to ...
C# | var pia = new PropertyInterceptorAction<PropertyInterceptorArgs<MyType>>(…) |
Notice the change from IPropertyInterceptorArgs to the abstract class, PropertyInterceptorArgs. This change became necessary to compensate for a Microsoft compiler bug introduced with Silverlight 5 as described in D2034 below.
Defect repairs
- Fixed issue where CacheQueryOptions settings were not being honored when doing a cache OrderBy query. [D1992] (Actually fixed in 6.1.6.1)
- Fixed issue where an AttachEntity call with a cloned entity could cause a duplicate detached entity to be added to the EntityManager’s entityCache that could then be found via a FindEntities call. [D1993]
- Fixed issues with recomposition for dynamic content added in .NET. [D1994]
- Creating a PredicateDescription fails when Object Value type is non-nullable and property type is nullable. Fixed. [1996]
- A better exception is now thrown when doing Add/Attach/GetEntityGroup with a non-entity (POCO without KeyAttribute). It used to throw a NullReferenceException. [1997]
- EntityKey constructor can throw InvalidCastException when passing in an implicitly typed array. Fixed. [1998]
- Fixed issues with the loading and recomposition of dynamic Xaps. [D1999]
- Fixed issue where the ToPredicate<T> was not callable with multiple different 'T's providing that they were 'compatible'. [D2000]
- .ibmmx file not being checked in when working with TFS. Fixed. [D2001]
- A better exception is now thrown when executing a StoredProcQuery with a null DataSourceKeyName. It used to throw a NullReferenceException. [2003]
- Multiple Code First models having the same database connection string are now supported, as are multiple CF models without a connection string defined. Note that each model must have a unique data source key name. [D2004]
- Fixed issue where a NullRefException was thrown after a save where an entity’s ValidationErrors collection contained a free form VerifierResult involving a ComplexType property. [D2008]
- Fixed an issue where an entity save would succeed even though it’s ValidationErrors contained a free form VerifierResult assigned on the client. [D2009]
- Fixed issue where the ErrorsChanged event was not being fired on a ComplexType after clearing the parent’s validation errors. [D2010]
- Fixed a problem with free form VerifierResults added to a server side entity’s ValidationErrors collection not being properly reflected back on the client. [D2011]
- Fixed a startup performance issue caused by the use of ThreadLocal variables in the PropertyInterceptor. [D2012]
- Fixed issue where many-to-many saves would fail in certain scenarios involving a combination of modified and new entities. [ D2013]
- Fixed a regression bug in which default values for synthetic entity properties were no longer set. [D2016]
- Fixed a threading issue occurring during saves involving many-to-many relations. [D2017]
- Upgraded to DotNetZip version 1.9.1.8 for the GZip support used in client-server communications and added retry logic for CRC errors. [D2018]
- Fixed issue where ImportEntities would not correctly resolve all navigation properties on merged targets. [D2019]
- Overrides to CompositionContext.Default now work in n-tier applications. Probing messages are also now written to the debug log when type filtering is used. [D2022]
- Fixed issue where server side validation errors were not easily clearable on the client. [D2023]
- Fixed issue where the RequiredValueVerifierAttribute was ignoring a custom ErrorMessageResourceName. [D2025]
- SL5 assemblies being installed even when a WinClient key is entered. Fixed. [D2026]
- The Login(sessionKey) call will now throw a LoginException if the sessionKey is not found. Previously the IEntityLoginManager.Login was called. [D2027]
- Fixed issue with where the EntityManager copy constructor was incorrectly resetting the source EntityManager’s IdGenerator when the source EntityManager was a server side EntityManager. [D2028]
- Named queries returning an IEnumerable called from the client with an Include clause would run but without performing the include. These operations now throw an exception with an explanatory message. [D2029]
- Fixed issue where a previously resolved scalar NavigationProperty would not return a NullEntity after an independent delete of its associated entity. Fixed. [D2030]
- StoredProcQuery.Clone() now clones other pertinent properties. [2031]
- Code First only In a TPH scenario, overriding a virtual property in a sub-class would throw an InvalidCastException upon querying and saving. Fixed. [D2032]
- Silverlight 5 only. We discovered a major performance issue with property accessors becoming up to 20 times slower in Silverlight 5 than Silverlight 4. Tracked down to a Microsoft bug; an internal workaround within our SL5 implementation now corrects the issue. [D2034] (The PropertyInterceptorAction breaking change mentioned above is associated with this issue.)
- Fixed a NullReferenceException which occurred when calling Authenticator.Instance.Logout(Async) when the Authenticator was not connected to an EntityServer. [D2040]
- Fixed a startup performance issue caused by the allocation of a List<Tuple<..>> in the PropertyInterceptor. [D2055]
New and improved product features
- Symbol files and source are now generated for each release and may be obtained upon request for debugging purposes. Implemented in the 6.1.6.1 release. [F1278]
- We now execute instance verifiers for entities queried and then modified from within an EntityServerSaveInterceptor. [F1897]
- Installer will halt if Visual Studio Express is the only VS version installed. [F1918]
- Business Application Templates now use the Authenticator and DefaultAuthenticationContext classes. [F1919]
- Added support for Visual Studio 11 Beta. DevForce design and build time support is now automatically installed to Visual Studio 2010 and Visual Studio 11 Beta. Please note that the DevForce EDM Designer Extension for VS11 is supported only for projects targeting .NET 4.0. As VS11 is Beta, DevForce support for it is also beta. [F1921]
- PageChangedOperation returned by EntityQueryPager async methods now supports cancel operation. [F1925]
- Using latest version of PostSharp (2.1.6.13). [F1927]
- Installer changes to support Visual Studio 11 Beta. [F1928]
- EntityServer instances are now tracked to avoid duplicate instances in some server-side processing, such as when the Authenticator is called directly on the server. [F1941]