Почему перегрузки конструктора DomainService не отображаются как перегрузки конструктора DomainContext? - PullRequest
1 голос
/ 12 апреля 2011

Я написал перегрузку для своего класса DomainService.Проблема в том, что когда я перекомпилирую, он не отображается как перегрузка для моего DomainContext.В чем дело?Вот пример кода:

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

И это не работает:

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

Я получаю ошибку, что не существует соответствующей перегрузки.Разве мне не разрешено это делать?Нужен ли какой-нибудь атрибут?

Ответы [ 2 ]

1 голос
/ 12 апреля 2011

Вам не разрешено это делать.При обновлении контекста из вашего клиента Silverlight вы непосредственно не запускаете сервис.Вместо этого вы создаете экземпляр прокси-класса, созданного службами RIA, и этот прокси-класс затем вызывает вашу службу.Вот почему вы не видите своего конструктора: потому что RIA не сгенерировал его в вашем прокси.

Выполнение того, что вы пытаетесь сделать, также подразумевало бы, что ввремя обновления этого FoodDomainContext класса, чего не произойдет, потому что вам нужно завершить инициализацию этого объекта, прежде чем вы сможете это сделать.

В любом случае, вместо этого вы можете создать методSetCurrentCulture (), а затем вызвать его после инициализации прокси.

0 голосов
/ 12 апреля 2011

Это не будет работать, потому что DomainContext генерируется на клиентском коде silverlight, нажмите на просмотр всех папок или перейдите к определению, и вы увидите, что сгенерированный код не будет содержать ваш дополнительный конструктор.

Вместо этого вам придется создать метод в службе вашего домена и передать информацию на сервер.

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

На вашем клиенте, внутри конструктора вы должны позвонить,

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