RIA不会为多个域服务生成上下文

时间:2011-10-18 13:14:50

标签: c# silverlight entity-framework-4 ria domainservices

框架:.NET 4,实体框架4,Silverlight 4,RIA服务

我正在尝试将我的Entity Framework模型拆分为两个域服务类。该模型并不复杂 - 有几个表格。所以我创建了一个Entity Framework模型。

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

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

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

3 个答案:

答案 0 :(得分:0)

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

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

public class DomainServiceB
{
    public IQueryable<Company> MethodB() { .. }
}

答案 1 :(得分:0)

不是RIA专家,但我想知道您是否正在尝试将在您的某项服务中检索到的实体传递给其他服务。如果您直接使用EF而不是通过RIA,那么在使用一个objectcontext检索并尝试将实体传递给另一个objectcontext的情况下,您会遇到问题。在“直接使用EF”方案中,您必须首先将实体从将其从数据库中拉出的上下文中分离,然后才能将其附加到其他上下文。因此,如果您在RIA应用程序中执行此操作,则可能是同一个问题。该实体需要与第一个服务分离。我无法告诉你如何做到这一点,因为我很长一段时间没有使用过RIA服务。希望这会指出你有用的方向。

答案 2 :(得分:0)

是的,从我所看到的,并不是一个非常简单的方法让它工作......我通常只是把它全部放在一个域服务中因为这个: - /不理想但也许它会改变一个版本左右...否则我只是为每个域服务实现创建特定的DTO并使用它们: - /

以下是其他一些可能有用的建议

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

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

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