我的EF模型是从我的SQL Server数据库生成的。然后我为EF模型生成了一个针对RIAServices的DomainService。其中一个实体被称为“EntryCategories”。在创建的DomainService这种方法:手工构建的RIAServices不受支持的类型DomainService
public IQueryable<EntryCategories> GetEntryCategoriesSet()
{
return this.Context.EntryCategoriesSet;
}
由于我的用户界面显示模式看起来与物理模型完全不同,我决定写我自己的DomainService对于和相关实体。是的,我知道我们要修改生成的内容,但它里面有很多东西,我想专注于一件小事。
我除去从所生成的DomainService的EnableClientAccess属性并增加了一个称为ClientDomainService新的类,并且在它包封所生成的DomainService:
[EnableClientAccess()]
public class ClientDomainService : DomainService
{
// the generated domain service encapsulated in my new one.
private DataDomainService _dcds = new DataDomainService();
// reimplement one of the DataDomainService methods
public IQueryable<EntryCategories> GetEntryCategories()
{
return (from t in _dcds.GetEntryCategoriesSet() where t.EntryCategoriesVersions.EntryCategoriesVersionId == datahead.EntryCategoriesVersions.EntryCategoriesVersionId orderby t.DisplayOrder select t);
}
}
我尝试的非常拳头的是要重新实现GetCateogoriesSet方法但基础数据是根据我班的另一个实体(未显示)过滤的。但是,当我建立这个,一个错误显示出来:
Entity 'DataProject.Web.EntryCategories' has a property 'EntryCategoriesVersionsReference' with an unsupported type
如果我注释掉我CientDomainService,更换所产生的DomainService的EnableClientAccess属性,并把analagous LINQ过滤原GetEntryCategoriesSet方法,项目编译没有错误。
生成的DomainService对我的新服务没有什么特别之处?它是metadata.cs文件吗?
Tor Haugen的答案为我工作。我没有足够的代表来提高他的答案。我应该注意到,我为我的RIA服务域上下文创建了一个基类,可以在不同的项目中重用,而实际定义实体的类是我拥有[LinqToEntitiesDomainServiceDescriptionProvider]属性的类。因此,对objectcontext的强烈引用对我来说并不重要,因为我直接引用了来自该特定objectcontext的实体。感谢所有的帮助! – 2011-06-17 15:52:51
有关此问题可能发生的方式的进一步说明,请通读此主题。 http://forums.silverlight.net/p/233457/583536.aspx – 2011-08-10 00:29:02