如何从Domain Service类调用方法

时间:2012-02-22 09:33:58

标签: asp.net silverlight asp.net-membership

对于从silverlight调用域服务类方法,我需要一些帮助。

这与我昨天解决的问题有些联系。再次感谢! 对于那些感兴趣的人,我的问题可以在这里找到:

Using ASP.net membership to get aspnet_Users in silverlight

现在回答我当前的问题。

我在Domain Service Class中有以下方法,名为MembershipData

 [RequiresRole("Managers")]
 public void DeleteUser(MembershipServiceUser user)
 {
     Membership.DeleteUser(user.UserName);
 }
  • 此代码来自kylemc的教程

现在如何在Silverlight中调用此方法?

我从昨天的问题中了解到

public IEnumerable<MembershipServiceUser> GetAllUsers()
需要通过定义查询,然后运行查询然后在结果返回时调用OnGetAllUsersLoaded来调用

我不确定的是,您是否需要以这种方式调用该方法,因为它的返回类型?

显然public void DeleteUser(MembershipServiceUser用户)没有返回类型,因此无法以这种方式调用。

似乎无法做到:

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) so.HasError = true 而这样的ChangeSet - &gt; RemovedEntities = 1,但是EntitiesInError的结果是“枚举没有结果”

再次感谢帮助引导我朝着正确的方向前进。

1 个答案:

答案 0 :(得分:1)

RIA服务的工作原理是创建一个更改集(字面意思是一组更改)并将这些更改发送到服务器。执行CRUD的方法更像是Entity Framework,而不是直接方法调用。

在客户端,您将在域上下文的User集合上调用Remove方法。

在接收方,它会经历所有更改并说:

  • Q值。 “这是一个对象删除吗?”
  • 甲。是的......
  • Q值。 “它是什么对象类型?”
  • 甲。 MembershipServiceUser
  • Q值。 “我们是否有一个名为Delete的方法,它采用MembershipServiceUser参数?”
  • 甲。是的......

然后用变更集中的对象调用该方法......