1

我为我的 DomainService 类编写了一个重载。问题是,当我重新编译时,它并没有显示为我的 DomainContext 的重载。怎么了?这是一个代码示例:

[EnableClientAccess]
public class FoodDomainService : LinqToEntitiesDomainService<FoodEntities>
{
    public FoodDomainService(CultureInfo cultureInfo)
    {
        Thread.CurrentThread.CurrentCulture = cultureInfo;
    }
}

这不起作用:

FoodDomainContext _foodContext = new FoodDomainContext(Thread.CurrentThread.CurrentCulture);

我得到一个错误,没有与之匹配的重载。我不允许这样做吗?我需要某种属性吗?

4

2 回答 2

1

你不能这样做。从 Silverlight 客户端更新上下文时,您不会直接实例化您的服务。相反,您实例化由 RIA 服务生成的代理类,然后该代理类将调用您的服务。这就是您看不到构造函数的原因:因为 RIA 没有在您的代理中生成它。

做你想做的事也意味着在更新那个FoodDomainContext类时有一个到服务器的往返,这不会发生,因为你需要先完成该对象的初始化才能这样做。

无论如何,您可以创建一个名为 SetCurrentCulture() 的方法,然后在初始化代理后调用它。

于 2011-04-12T04:22:22.783 回答
0

这将不起作用,因为 DomainContext 是在 silverlight 的客户端代码上生成的,单击查看所有文件夹或跳转到定义,您将看到生成的代码将不包含您的额外构造函数。

相反,您必须在域服务中创建一个方法并将信息传递给服务器。

public SetCultreInfo(int lang,...)
{
   ..  set culture info
}

在您的客户端上,您应该在构造函数内部调用,

public MyDomainContext()
{
    this.SetCulture(....);
}
于 2011-04-12T04:21:50.333 回答