RIA并不生成所有的代理实体

本文关键字:代理 实体 RIA | 更新日期: 2023-09-27 18:10:39

框架:Silverlight 4 + Entity Framework 4 (SL业务应用:一个解决方案中的SL项目和。web项目)

我有两个类在我的数据层(不映射到DB,手动创建-我需要他们为特定的视图)

[EnableClientAccess]
public class CityInfoFull
{
    [Key]
    public int Id { get; set; }
    public String Country{ get; set; }
    public String Region { get; set; }
    public String City { get; set; }
    public int Population { get; set; }
    public DateTime Founded { get; set; }
}

RIA在Geography.Web.g.cs

中生成适当的代理类。在同一个命名空间中,我有另一个类:
[EnableClientAccess]
public class Person
{
    [Key]
    public int Id { get; set; }
    public String FullName { get; set; }
    public DateTime DateOfBirth { get; set; }
}

然而,RIA不想为这个类生成代理。我需要代理在Silverlight应用程序,它不生成。

这是什么原因呢?

我试过:

  • 检查文件是否设置为Compile
  • 检查文件是否在适当的命名空间
  • 重建包含文件的web项目
  • 重建SL项目
  • 删除。g.cs文件并重新构建项目。
  • 检查是否生成了其他代理类。(我发现我创建的任何新类都不会有代理,但是如果我改变已经存在的类,它们的代理将被更新。但是没有创建新的代理。似乎只有在某些点生成之前创建的类,从那时起创建的一切都没有得到它的代理,即使我删除。g.cs并让RIA重新生成。g.cs)。

这些都不起作用。我还能做什么?

RIA并不生成所有的代理实体

你需要在你的域服务中为你想要在silverlight项目中使用的每个实体定义一个查询方法。在您的示例中,您必须为CityInfoFullPerson定义查询操作。

public class MyDomainSerivce : DomainService {
   public IQueryable<CityInfoFull> GetCities() {
     // your logic
   }
   public IQueryable<Person> GetPersons() {
     // your logic
   }
}

如果你想允许指定类型的实体可以在silverlight应用程序中插入、更新和删除,你需要在你的DomainService中为这些实体定义相应的插入、更新和删除操作。

查看WCF RIA服务文档以获取更多详细信息