我在多台机器上的 Visual Studio 2010 和 11 beta 上都试过这个。我还使用了 EF 4.3 和 5.0 - beta 2。我正在 silverlight 5 中尝试代码优先的方法。
我创建了一个 DbDomainService 并为其创建了 CRUD 操作,但在客户端没有创建代理实体。我在 WCF 类库中执行此操作。以下是它的创建方式:我将一个项目添加到解决方案(WCF RIA 服务类库)。客户端和服务端项目会自动添加并通过 RIA 链接链接。我创建了我的实体和 dbcontext(参见下面的源代码)。我创建了我的域服务类(向导只显示了一半的时间,也有很多错误)并确保有 CRUD 操作。我重建并显示客户端项目上的所有文件,并且没有生成的代码。如果我将 DomianService 类更改为从 DomainService 而不是 DbDomainService 继承,那么我的代理实体会按预期在客户端生成。
构建解决方案时,我收到以下警告:
警告 1 创建 MEF 组合容器时发生以下异常:无法加载一种或多种请求的类型。检索 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);
}
}
}