RIA不会生成所有代理实体

Kor*_*tak 4 c# code-generation entity-framework-4 silverlight-4.0 wcf-ria-services

框架: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; }
}
Run Code Online (Sandbox Code Playgroud)

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; }
}
Run Code Online (Sandbox Code Playgroud)

但是,RIA不希望为此类生成代理.我需要Silverlight应用程序中的代理,它不会生成.

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

我试过了:

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

这些都没有奏效.我还可以做些什么?

Jeh*_*hof 5

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

public class MyDomainSerivce : DomainService {

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

   public IQueryable<Person> GetPersons() {
     // your logic
   }
}
Run Code Online (Sandbox Code Playgroud)

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

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