Как вызвать метод из класса службы домена - PullRequest
0 голосов
/ 22 февраля 2012

Еще раз мне нужна помощь в вызове метода класса Domain Service из silverlight.

Это в некоторой степени связано с моим вчерашним вопросом, который был решен.Еще раз спасибо!Для тех, кто заинтересован, мой вчерашний вопрос можно найти здесь:

Использование членства в ASP.net для получения aspnet_Users в silverlight

Теперь на мой текущий вопрос.

У меня есть следующий метод в классе обслуживания домена, который называется MembershipData

 [RequiresRole("Managers")]
 public void DeleteUser(MembershipServiceUser user)
 {
     Membership.DeleteUser(user.UserName);
 }
  • Этот код взят из учебника kylemc

Теперь, как мне вызвать этот методиз Silverlight?

Я понял из вчерашнего вопроса, что

public IEnumerable<MembershipServiceUser> GetAllUsers()

нужно вызывать, задав запрос, затем выполнив запрос и затем вызвав OnGetAllUsersLoaded, когда результаты вернутся.

В чем я не уверен, вам нужно вызывать метод таким образом из-за его возвращаемого типа?

Очевидно, что public void DeleteUser (MembershipServiceUser user) не имеет возвращаемого типа, поэтому не может быть вызван втаким образом.

Не представляется возможным сделать:

MembershipDataContext context = new MembershipDataContext();
MembershipServiceUser user = new MembershipServiceUser();
user.UserName = "bob";

context.DeleteUser(user);

Но тогда как мне использовать метод DeleteUser?

Любой помощникМы очень признательны.

С уважением,

Нил

Обновление

Спасибо за информацию HiTech.У меня есть еще одна проблема, которую мне нужно решить.Возможно, я все еще что-то не правильно делаю.

Сейчас я создаю новый экземпляр MembershipServiceUser, назовем его msu.Затем присваивая msu.UserName и msu.Email пользовательские данные, и после этого вызывая

context.MembershipServiceUsers.Remove(msu) 

, где context является контекстом моей доменной службы MembershipData, и я проверил, что

context MembershipServiceUsers results 

делаетиметь мою информацию пользователя.Однако затем я получаю следующую ошибку

«Указанная сущность не содержится в этом EntitySet».

Я уверен, что данные в msu верны, поэтому есть идеи, почему я получаю эту ошибку?Большое спасибо

Обновление 2

Я на правильном пути с чем-то вроде следующего ...

MembershipServiceUser usr = (from a in context.MembershipServiceUsers
                                     where a.UserName == "bob"
                                     select a).First();

context.MembershipServiceUsers.Remove(usr);
context.SubmitChanges(DeleteUser_completed, null);

Или это выключено?потому что в моем обратном вызове DeleteUser_completed (так что SubmitOperation) so.HasError = true, в то время как ChangeSet -> RemovedEntities = 1, а вот так, в результате EntitiesInError "перечисление не дало никаких результатов"

Еще раз спасибо за помощь, чтобы направить меня в правенаправление.

1 Ответ

1 голос
/ 22 февраля 2012

Службы RIA работают, создавая набор изменений (буквально набор изменений) и отправляя только эти изменения на сервер.Методы CRUD больше похожи на Entity Framework, а не на прямые вызовы методов.

На стороне клиента вы вызовете метод Remove в коллекции User контекста домена.

На принимающей стороне он проходит через все изменения и говорит:

  • Q."Это удаление объекта?"
  • A.Да ...
  • Q."Какой это тип объекта?"
  • A.MembershipServiceUser
  • Q.«У нас есть метод с именем Delete, который принимает параметр MembershipServiceUser
  • A.Да ...

Затем он вызывает этот метод с объектом из набора изменений ...

...