1

Visual Studio 2010と11ベータ版の両方で、いくつかのマシンでこれを試しました。また、EF4.3および5.0-ベータ2を使用しました。Silverlight5でコードファーストアプローチを試しています。

DbDomainServiceを作成し、そのCRUD操作も作成しましたが、クライアント側ではプロキシエンティティが作成されていません。私はこれをWCFクラスライブラリで行っています。作成方法は次のとおりです。ソリューションにプロジェクトを追加します(WCF RIAサービスクラスライブラリ)。クライアント側とサービス側のプロジェクトは自動的に追加され、RIAリンクを介してリンクされます。エンティティとdbcontextを作成します(以下のソースを参照)。ドメインサービスクラスを作成し(ウィザードは半分の時間しか表示されず、非常にバグがあります)、CRUD操作があることを確認します。再構築し、クライアント側プロジェクトのすべてのファイルを表示しますが、生成されたコードはありません。DomianServiceクラスをDbDomainServiceではなくDomainServiceから継承するように変更すると、プロキシエンティティは期待どおりにクライアント側で生成されます。

ソリューションを構築すると、次の警告が表示されます。

警告1MEFコンポジションコンテナの作成中に次の例外が発生しました。要求されたタイプの1つ以上をロードできません。詳細については、LoaderExceptionsプロパティを取得してください。デフォルトのコードジェネレーターが使用されます。AProgram.Client.RIAServices

助けてください :)

    namespace AProgram.Server.RIAServices.Models.Sales
    {

       public class Customer
       {
          [Key]
          public int CustomerID { get; set; }

          [Required]
          [MaxLength(50)]
          public string CustomerName { get; set; }
       }

    }

    namespace AProgram.Server.RIAServices
    {
       public class SalesDbContext : DbContext
       {
          public DbSet<Customer> Customers { get; set; }
       }
    }

    namespace AProgram.Server.RIAServices
    {
       using System;
       using System.Collections.Generic;
       using System.ComponentModel;
       using System.ComponentModel.DataAnnotations;
   using System.Linq;
   using System.ServiceModel.DomainServices.Hosting;
   using System.ServiceModel.DomainServices.Server;


   // TODO: Create methods containing your application logic.
   [EnableClientAccess()]
   public class SalesDomainService : DbDomainService<SalesDbContext>
   {
      [Query(IsComposible=false)]
      public Customer GetCustomer(int id)
      {
         return this.DbContext.Customers.Find(id);
      }
   }
}
4

2 に答える 2

6

好奇心旺盛な人のために答えを見つけました。RiaServicesはEF4.1とのみ互換性があるようです。コードプロジェクトの記事で回避策を見つけました:

<runtime>
     <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
       <dependentAssembly>
         <assemblyIdentity name="EntityFramework" 
           publicKeyToken="b77a5c561934e089" culture="neutral" />
         <bindingRedirect oldVersion="0.0.0.0-5.0.0.0" newVersion="5.0.0.0" />
       </dependentAssembly>
     </assemblyBinding>
 </runtime>

これをWeb.configファイルに追加するだけです。または、Ria Servicesクラスライブラリを使用している場合は、これをapp.configに追加し、app.configの名前をweb.configに変更します。

記事へのリンクは次のとおりです。CodeprojectArticle

于 2012-05-04T04:00:09.673 に答える
0

RIAとEFでも問題が発生しました。解決策は、NuGetPackageRIAServices.EntityFrameworkを使用することでした。問題は、RIAサービスが特定のバージョンのEFのみをサポートすることです。現時点では、<=4.1のみをサポートしているようです。

于 2012-05-02T07:03:58.453 に答える