12/9/2013 Porting from WCF RIA Services to Open RIA Services

Other articles by:ColinBlair Colin Blair

All Open RIA Services components are installed from NuGet packages. Those packages are currently available from a MyGet feed. You can add the MyGet feed in Visual Studio on the Tools->Library Package Manager->Package Manager Settings->Package Sources screen. The URL is https://www.myget.org/F/openriaservices/

UPDATE: Open RIA Services has been released, NuGet packages are now available from NuGet,


  1. Remove all WCF RIA Services NuGet packages and DLLs. Look for DLLs with the System.ServiceModel.DomainServices and Microsoft.ServiceModel.DomainServices namespaces.
  2. Install the OpenRiaServices.Server package for all project that previously referenced System.ServiceModel.DomainServices.Server
  3. If you are using Entity Framework 6, install the OpenRiaServics.EntityFramework package.
  4. If you are using Entity Framework 4 (ObjectContext), install the OpenRiaServices.EntityFramework.EF4 package.
  5. If you are using Entity Framework 5, you will need to upgrade to 6.
  6. Install the OpenRiaServices.Silverlight package in the Silverlight projects that previously had the System.ServiceModel.DomainServices.Client DLL.
  7. The OpenRiaServices.Silverlight package includes the OpenRiaServices.Silverlight.Core, OpenRiaServices.Silverlight.CodeGen, and OpenRiaServices.ViewModel packages in one install.
  8. Unload the Silverlight project and edit the project file.
  9. Find the LinkedServerProject tag inside the project file. Rename the tag to LinkedOpenRiaServerProject and then reload the project. Repeat for any other projects that are RIA Linked.
  10. Added 4/14: If you are using the RiaClientUseFullTypesNames in the project file, rename it to OpenRiaClientUsefullTypesNames.
  11. Find all references to the System.ServiceModel.DomainServices namespace in your solution and replace them with OpenRiaServices.DomainServices.
  12. In the web.config, the PublicKeyToken for the RIA Services dlls needs to be changed to null in addition to changing form System.ServiceModel.DomainServices to OpenRiaServices.DomainServices
  13. If you are using the DomainDataSource, then remove the System.Windows.Controls.DomainServices dll and install the OpenRiaServices.Silverlight.DomainDataSource package. The namespace changes match the dll changes.








Breaking Changes

  • DbDomainService does not support older version of Entity Framework.
  • Open RIA Services dlls are not strongly signed.
  • Open RIA Services does not support partial trust.

Rated 3.67, 3 vote(s). 

Comments

joachim welker

Ok - already found the solution. I have to admit that I forgot to change the reference inside the XAML files to OpenRiaService.Control. After having done that everything works fine.

4/9/2014 2:23:04 PM

Tony Zheng

Can I know where is the name space for "EntityCollection<>"? My compiler cannot resolve the name. Thanks!

4/11/2014 11:47:56 PM
ColinBlair

Colin Blair

EntityCollection is in the OpenRiaServices.DomainServices.Client namespace which would be the OpenRiaServices.Silverlight.Core NuGet package.

4/14/2014 3:40:33 PM

joachim welker

Sorry to bother again - but I don't get really to a point where I can run my project. Here's the history of things I diod so far:
1. I tried to move the VS2010 (.net Framework 3.5) Silverlight 5 project using WCF RIA services together with EF4 to VS 2013 (.net Framework 4.5). In this project I had several DomainServices which provided the base for Silverlight to ingteract with the data.
2. I followed the instructions of your porting manual and finally got to the point where the project build - almost. There is just this tiny problem that the Silverlight client is not able to see the tables defined by the EF and the DomainService metadata file. The reason for this seems to be the that the namespace of the server project is not found by the silverlight client. And I can't figure out where to start looking.

Maybe there is a simple setting or reference which just passes me by? Thank you for your help!

4/16/2014 2:54:56 PM
papuashu

papuashu

Regarding step 9.Find the LinkedServerProject tag inside the project file. Rename the tag to LinkedOpenRiaServerProject and then reload the project. Repeat for any other projects that are RIA Linked.

One can keep the existing element <LinkedServerProject>....</LinkedServerProject> and add underneath the new element <LinkedOpenRiaServerProject>$(LinkedServerProject)</LinkedOpenRiaServerProject> (a macro that is replaced with the value of LinkedServerProject tag).
This way one can edit the link from the standard "WCF RIA Services Link" option in Properties screen of the project.

5/17/2014 12:18:16 PM
drm479

drm479

For "Open RIA Services support for Entity Framework 6+ 4.3.0" it states "OpenRiaServices.EntityFramework provides the DbDomainService and LinqToEntities classes which can be used to create Domain Service classes for use with a DbContext or ObjectContext from the EntityFramework package."

We want to move to EF6 but we use ObjectContext, so we don't want to migrate to using DbContext. So, will apply this package provide a simple upgrade path to using EF6 with Ria Services?

5/21/2014 5:30:41 PM
ColinBlair

Colin Blair

@DRM479 Yes, it supports EF 6 using ObjectContext.

You will need to use the EF 6.x Entity Object Generator
http://visualstudiogallery.msdn.microsoft.com/66612113-549c-4a9e-a14a-f629ceb3f89a

5/21/2014 5:35:20 PM
parthiv-kagtada

parthiv.kagtada

Hi,

I am facing a similar issue as: http://openriaservices.codeplex.com/workitem/28. The issue is fixed I would like to know how did you fix that?

Thanks for the help!

5/23/2014 1:44:04 PM
ColinBlair

Colin Blair

It was fixed with a pull request that was merged into the code. Check to make sure you have the latest NuGet packages, you may need to switch to the beta versions.

5/23/2014 2:00:02 PM
parthiv-kagtada

parthiv.kagtada

Hi Colin,

I tried it with latest NuGet Packages. Let me share some more information so that you can help.

I have Main Application and other supported application underneath same project solutions.

Other supported applications and the one in which entity framework reside (server side) are converted successfully but while giving the reference of all these project dll to main project when I give reference of OpenRiaServices I get an error "Exception has been thrown by target of an invocation".

All projects follow client-server architecture.

Thanks in advance!

5/26/2014 5:29:58 AM
1 2 3 4 5
Notify me when new comments are added to this post
Save comment