0

框架:.NET 4、Entity Framework 4、Silverlight 4、RIA 服务

我正在尝试将我的实体框架模型拆分为两个域服务类。该模型并不复杂 - 几个表。所以我创建了一个单一的实体框架模型。

我想创建两个域服务类 - 每个都访问完整 EF 模型的一个子集。我首先创建一个域服务类。RIADomainContext在基于域服务的 SL4 应用程序中生成。但是,当我添加第二个域服务类时,RIA 不会生成任何域上下文(因此我什至无法使用第一个)。

(注意:两个域服务都有EnableClientAccess属性集,并且都至少有一个查询。)

为什么没有生成上下文,如何解决?我错过了什么吗?RIA 能否为使用相同实体框架模型的两个不同领域服务生成上下文?

4

3 回答 3

0

看起来您的实体被 2 DomainService 公开,例如,您有实体名称Company,并且您有在两个域服务中返回 Company 的方法:

public class DomainServiceA
{
    public IQueryable<Company> MethodA() { .. }
}

public class DomainServiceB
{
    public IQueryable<Company> MethodB() { .. }
}
于 2011-10-18T13:43:05.043 回答
0

不是 RIA 专家,但我想知道您是否正在尝试将在您的一项服务中检索到的实体传递给另一项服务。如果您直接使用 EF,而不是通过 RIA,在使用一个 objectcontext 检索然后尝试将实体传递给另一个 objectcontext 的情况下,您会遇到问题。在“直接使用 EF”场景中,您必须先将实体与从数据库中提取它的上下文分离,然后才能将其附加到其他上下文。因此,如果这就是您在 RIA 应用程序中所做的事情,那可能是同样的问题。该实体需要与第一个服务分离。我不能告诉你怎么做,因为我很久没有使用 RIA 服务了。希望这将为您指明一个有用的方向。

于 2011-10-18T13:44:29.577 回答
0

是的,从我所看到的情况来看,实际上并没有一种超级简单的方法来让它工作......我通常只是把它全部放在一个域服务中,因为这个:-/不理想,但也许它会在发布或所以...否则我只是为每个域服务实现创建特定的 DTO 并使用它们:-/

这里有一些其他的建议可能会有所帮助

http://forums.silverlight.net/t/146340.aspx/1

http://forums.silverlight.net/t/111058.aspx/1

否则,我认为您可以做到的唯一方法是在您在不同程序集中表示的数据子集上创建两个不同的 EF 模型并以这种方式公开它们。

于 2011-10-28T21:07:53.680 回答