How to set up RIA services with Silverlight 4.0 and without EF

后端 未结 1 1885
别那么骄傲
别那么骄傲 2021-01-01 05:19

As a Silverlight newbie, I am finding it really hard to set up an RIA Web service. The examples available on the web almost always refer to Entity framework as the ORM but w

相关标签:
1条回答
  • 2021-01-01 06:21

    These scenarios (non-EntityFramework RIA Services with Silverlight) are definitely under documented and I hope to post some blog entries soon to cover these scenarios (including how to use NHibernate).

    Here is one way to do what you are asking:

    Install "Silverlight 4 Tools for Visual Studio 2010" if you haven't already:

    http://www.microsoft.com/downloads/en/details.aspx?FamilyID=b3deb194-ca86-4fb6-a716-b67c2604a139&displaylang=en

    Create a new Silverlight Navigation Application in Visual Studio 2010 (check the box to enable RIA Services).

    Modify the web.config in the web project in the following ways:

    In the <system.web> section, add:

    <httpModules>
      <add name="DomainServiceModule"
       type="System.ServiceModel.DomainServices.Hosting.DomainServiceHttpModule,
             System.ServiceModel.DomainServices.Hosting, Version=4.0.0.0,
             Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
    </httpModules>
    

    Add a <system.serviceModel> section as a peer of <system.web>:

      <system.serviceModel>
        <serviceHostingEnvironment aspNetCompatibilityEnabled="true"
         multipleSiteBindingsEnabled="true" />
      </system.serviceModel>
    

    Add the following references to the web project:

    System.ServiceModel.DomainServices.Hosting  
    System.ServiceModel.DomainServices.Server
    

    Create a new class VanillaDomainService in the web project that contains your "return 100" method:

    [System.ServiceModel.DomainServices.Hosting.EnableClientAccess()]
    public class VanillaDomainService :
                    System.ServiceModel.DomainServices.Server.DomainService
    {
        public int ReturnInteger100()
        {
            return 100;
        }
    }
    

    Now back to the Silverlight Application project, in Home.xaml.cs, in the OnNavigatedTo method, call your new RIA Services method (remember all calls are async):

        protected override void OnNavigatedTo(NavigationEventArgs e)
        {
            SilverlightApplication1.Web.VanillaDomainContext oneVanillaDomainContext =
               new SilverlightApplication1.Web.VanillaDomainContext();
    
            oneVanillaDomainContext.ReturnInteger100(
               anInt => MessageBox.Show(anInt.Value.ToString()), null);
        }
    

    Now build and run and that should be it.

    I tested this code and it worked for me.

    0 讨论(0)
提交回复
热议问题