为什么DomainService构造函数不会重载显示为DomainContext构造函数重载?

时间:2011-04-12 03:02:30

标签: silverlight ria domainservices

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

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

这不起作用:

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

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

2 个答案:

答案 0 :(得分:1)

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

做你正在尝试做的事情也会暗示在新的FoodDomainContext课程时往返服务器,这是不会发生的,因为你需要完成在你可以这样做之前初始化那个对象。

无论如何,你可以创建一个名为SetCurrentCulture()的方法,然后在初始化代理之后将其称为

答案 1 :(得分:0)

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

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

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

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

public MyDomainContext()
{
    this.SetCulture(....);
}