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)。
这些都不起作用。我还能做什么?
你需要在你的域服务中为你想要在silverlight项目中使用的每个实体定义一个查询方法。在您的示例中,您必须为CityInfoFull
和Person
定义查询操作。
public class MyDomainSerivce : DomainService {
public IQueryable<CityInfoFull> GetCities() {
// your logic
}
public IQueryable<Person> GetPersons() {
// your logic
}
}
如果你想允许指定类型的实体可以在silverlight应用程序中插入、更新和删除,你需要在你的DomainService中为这些实体定义相应的插入、更新和删除操作。
查看WCF RIA服务文档以获取更多详细信息