Bug fixes

Details

#44: Provide signed assemblies

There are now signed versions of all nuget packages availible.The signed packages starts with "OpenRiaServices.Signed" in the name, e.g the signed version of OpenRiaServices.Client.Core is named OpenRiaServices.Signed.Client.Core.

#40: Task Async API on client

The following methods have been added to DomainContext:◾Task<LoadResult<T>> DomainContext.LoadAsync<T>(...) ◾Task<SubmitResult> DomainContext.SubmitChangesAsync<T>(...) ◾Task<InvokeResult<T>> DomainContext.InvokeOperationAsync<T>(...)

Changes to DomainOperationException◾DomainOperationException has been extended to include additional information such as Validation Errors. ◾SubmitOperationException - a new exception deriving from DomainOperationException and adds additional submit specific error information

Summary of new Types:◾LoadResult<T> - similar to LoadOperation<T>, but represents the result of a successfully completed load ◾SubmitResult - similar to SubmitOperation, but represents the result of a successfully completed load ◾InvokeResult<T> - similar to InvokeOperation<T>, but represents the result of a successfully completed load ◾SubmitOperationException - a new exception deriving from DomainOperationException and adds additional submit specific error information

other chages:◾Code generation (both standard and T4 generation) has been updated to generate a new Task-Async method for each invoke method

For a full description of what is implementation please read the posts in the async interface Group: (http://www.openriaservices.net/MonoX/Pages/SocialNetworking/Groups/dboard/CsFyj7nODU6pBKIRAXZInw/Async-RIA-Services/?GroupId=qreTR9FatkG7V6IRAXX9MQ)

#41: Allow Task-Async Query and Invoke on Server

Adds support for writing Queries and Invoke methods returning Task on the server.Writing service methods which in turn use many task-async methods becomes easier since one can now use async/await in the service methods and return a Task.

It is Important: to understand that currently the requests are invoked and waited upon from within DomainService.Invoke and DomainService.Query. In future releases one should not assume or rely on that either any of these methods will be invoked for Task-async server methods, instead we should look into adding async versions of these methods in order to achive better scalability. (The current Invoke and Query methods will continue to be invoked for non-Task methods).

Task<TEntity> GetSingleEntityQuery()

Task<IEnumerable<TEntity>>GetEnumerableEntityQuery()

Task<IQueryable<TEntity>>GetEntityQuery()

Task InvokeWithoutResult()

Task<T> InvokeWithResult()

#31: Allow multiple invocations of custom methods

It is now possible to invoke several different "custom methods"/"entity actions"

A new Attribute EntityActionAttribute has been added. The attribute "replaces" [Update(IsCustomMethod=true)] (the "IsCustomMethod=true" approach is still fully supported, but all new code should use [EntityAction] instead.

Each entity action can by default be invoked at most once for each SubmitChange call, but it now also possible to allow the same entity action to be invoked multiple times in the same changeset by setting "AllowMultipleInvocations=true" on the