RIA不会生成所有代理实体

时间:2011-10-05 08:45:20

标签: c# silverlight-4.0 entity-framework-4 code-generation wcf-ria-services

框架:Silverlight 4 +实体框架4(SL业务应用程序:解决方案中的SL项目和.WEB项目)

我的数据层中有两个类(未映射到数据库,手动创建 - 我需要它们用于特定视图)

[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应用程序中的代理,它不会生成。

可能是什么原因?我不知道在哪里看。

我试过了:

  • 检查文件是否设置为“编译”
  • 检查文件是否在相应的命名空间中
  • 重建包含文件的网络项目
  • 重建SL项目
  • 删除.g.cs文件并重建项目。
  • 检查是否生成了任何其他代理类。 (我发现我创建的任何新类都没有代理,但是如果我更改已经存在的类,它们的代理将会更新。但是没有创建新的代理。似乎只有在某些点之前创建的类才是生成和从那时起创建的所有内容都没有得到它的代理,即使我删除了.g.cs并让RIA重新生成.g.cs。)

这些都没有奏效。我还能做什么?

1 个答案:

答案 0 :(得分:5)

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

public class MyDomainSerivce : DomainService {

   public IQueryable<CityInfoFull> GetCities() {
     // your logic
   }

   public IQueryable<Person> GetPersons() {
     // your logic
   }
}

如果要允许在silverlight应用程序中插入,更新和删除指定类型的entites,则需要在DomainService中为实体定义相应的Insert-,Update-和Remove- Operations。

查看WCF RIA Services文档以获取更多详细信息。