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);
}
}
}