This release of DevForce 2010 includes a large number of bug fixes and enhancements.
After upgrading 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 within Visual Studio 2010 and selecting Run Custom Tool.
Breaking changes
- The IdeaBlade.EntityModel.Web assembly must always be deployed with an IIS-hosted EntityServer. Previously, although most deployments included this assembly, it was optional. [F1442]
- An EntityServer hosted by either the ServerConsole or ServerService which supports Silverlight clients must now deploy the IdeaBlade.EntityModel.Web assembly. [F1442]
- GetEntityBaseTypeName(EntityWrapper) is now a virtual method. Previously it was a static method. [1786]
- IdeaBlade.VisualStudio.OM.CodeGenerator.T4FileManager.StartNewClass now requires 1 string parameter to be passed in. Previously, it required none. This breaking change will only affect those who customize their code generation. [1794]
- We have changed the initial default value of EntityReference.EntityReferenceStrategy to null for all EntityReferences. The ‘null’ value is treated as a sentinel to indicate that the EntityManager’s DefaultEntityReferenceStrategy should be used. This change will not affect anyone who is setting an EntityReference’s .EntityReferenceStrategy but could break code that reads this property and does not expect to see a null value. Previously, a null value was not permitted.
- Because we changed our session timeout logic to enforce the config file UserSessionTimeout setting more rigorously, it is possible that sessions will timeout more quickly with the new code. The default for this setting has not changed ( still 30 minutes) but we check for timeouts much more frequently now so it is possible that sessions with long periods of no communication will now timeout much sooner after the SessionTimeout period than our previous code where a session might have stayed alive longer than it should. This can be mitigated by simply upping the UserSessionTimeout.
- [Code First] The ibmmx metadata file for a Code First model will now be given the DataSourceKeyName if present, and the existing ibmmx file will be removed. [F1828/F1829]
Defect repairs
- Added argument checking to the explicit IList implementation of RelatedEntityList<T>. The RelatedEntityList will no longer throw an InvalidCastException when calling nongeneric methods with invalid arguments. [D1885]
- Quiet installer should not bring up maintenance screen. Fixed in 6.1.3.1. [D1905]
- Removed the deprecated acronym "BOS" from the Visual Studio templates. [D1906]
- NullReferenceException was thrown when restoring an EntityCacheState on the server. Fixed in 6.1.3.2 [D1911]
- The IdeaBlade.Aop.SL assembly now supports Application Library Caching. [D1914]
- Fixed an error when using Push when both http and https web site bindings are present. [D1916]
- Release build models may not initialize navigation properties correctly. Fixed in 6.1.3.3. [D1918]
- Fixed an issue where a dynamic query with calls to the Average method with an argument type of Int32 would fail but would work for Doubles and Decimals. 'Dynamic' Average now works with all numeric types. [D1892]
- Fixed a problem with EntityManager.FindEntityGraph when working with many to many relationships. [D1908]
- Fixed a bug where calling EntityAspect.SetAdded on a entity with a store generated id and then calling an EntityManager.Save would result in duplicate entities in the local cache. [D1912]
- A query expression on a byte array property will no longer be incorrectly treated as a navigation property, thus creating QueryInversion issues. [D1923]
- EntityQueryPager now handles async errors gracefully. The EntityQueryPageChangedEventArgs<T> now extends AsyncEventArgs<T> and thus supports the same async error handling protocols as all other DevForce async calls. [D1924]
- [Code First] Minor modifications to the dependency checking performed prior to Code First model metadata generation. [D1859]
- [Code First] IdeaBlade.Aop.SL assembly was missing PostSharp license file causing any Code First entity that is defined in a Silverlight project to fail compilation. Fixed in 6.1.3.1 [D1896]
- [Code First] Replace hardcoded folder names in DomainModelTemplateCodeFirst tt file. Fixed in 6.1.3.1. [D1897]
- [Code First] SQL Server Compact 4.0 is now supported with Code First. [D1902]
- [Code First] An app.config file is no longer required at run time in a Code First application. [D1917]
- [Code First] Exception when EntityManager EntityQuery property name is not the same as the DbSet name in Code First. Fixed. Code First EntityQuery properties now use the "default entity set name" for the entity type. [D1922]
New and improved product features
- The .NET 4 Client Profile is now fully supported in 2-tier WinClient applications. [F1442]
- The DevForce Silverlight project templates now support targeting either Silverlight 4 or 5. See the Silverlight 5 FAQ. [F1695]
- Added an EntityManager property to globally control lazy loading and asynchronicity. [F1698]
- Deleted entities now support the IEditableObject interface. (This was needed for scenarios where some third party UI control would hold a reference to a deleted DevForce entity and would try to call IEditableObject methods on it.) [ F1768]
- DomainModelTemplate and DomainModelTemplateCodeFirst have been refactored to a new BaseDomainModelTemplate class. Both classes now inherit from it. [F1786]
- Debugger attributes have been added to avoid excessive debugger breaks during Query inversion expression tree work. This would only occur when debugging into DevForce code. [F1787]
- When Max. Classes Per File is set to 1, the generated designer class filename will default to "className.cs" eg: NorthwindIBEntities.cs, EntityRelations.cs, Customer.cs, etc. See Max. classes per file. [F1794]
- We now provide support for "persistent" entity connections for the duration of a client session. This is an advanced topic that has significant performance implications. [F1797]
- Version of PostSharp included in the DevForce installation has been updated to 2.1.5.1. [1793]
- The former "BOS Web Application" project template was broken into standard and advanced templates, now called "DevForce Entity Server Web Application" and "DevForce Entity Server Web Application – Advanced". [F1806]
- WinForms sample created. [F1808]
- We now automatically drop timed out user sessions based on a server based timer and the config file UserSessionTimeout settings. – This used to be triggered during each new Login process and we wanted a more 'timely' mechanism. [F1813]
- Unused ibmmx model metadata files in a project will now be removed. [F1829]
- DevForce’s implementation of the INotifyCompleted interface now supports multiple callbacks with the WhenCompleted method. This means that each call to INotifyCompleted.WhenCompleted will add its own action to a delegate chain instead of completely replacing the prior action. [F1832]
- EntityManager.FindEntityGraph performance when IsDeleted=false has been improved substantially. [F1837]
- Getting started links now point to the web rather then local html files. [F1841]
- DevForce installation now includes BaseDomainModelTemplate.cs source code. See F1786. [F1845]
- [Code First] A <CreatedOn> element has been added to all .ibmmx files. [ F1785]
- [Code First] Support for both Entity Framework 4.1 and 4.2 in Code First. [F1791]
- [Code First] The IdeaBlade.EntityModel.CodeFirstShim is no longer required for Silverlight in Code First models. [F1796]
- [Code First] The "DevForce Code First File" item template now adds all required assembly references. [F1798/F1807]
- [Code First] Marking an entity with the ProvideEntityAspect or ProvideComplexAspect attributes will now rewrite the underlying property logic so that the 'original' implementation of the property is called from within DevForce’s property interception instead of completely replacing it. This means that any custom logic within your property get and set methods will be honored and can be debugged into. Note that this only occurs for non-navigation properties. [F1804]
- [Code First] We removed the requirement that Code First navigation properties be typed to require a RelatedEntityList<T>. The requirement now is simply that the property return an ICollection<T>. Note that the collection returned will still be a RelatedEntityList<T> under the covers regardless of how it is typed. We still recommend returning an explicitly typed RelatedEntityList because it offers a number of useful features that an ICollection<T> does not. [F1805]
- [Code First] .NET projects containing a Code First model are now automatically re-built during metadata generation. Note that a Silverlight project containing links to the Code First files will still require a manual rebuild. [F1809]
- [Code First] The name of the ibmmx model metadata file generated for a Code First model will use the DataSourceKeyName attribute value if provided. [F1828]
- [Code First] DevForce Code First build errors will now inform the users of where to look in the DRC to better understand the error. [F1834]