对于从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);
}
现在如何在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的结果是“枚举没有结果”
再次感谢帮助引导我朝着正确的方向前进。
答案 0 :(得分:1)
RIA服务的工作原理是创建一个更改集(字面意思是一组更改)并将这些更改发送到服务器。执行CRUD的方法更像是Entity Framework,而不是直接方法调用。
在客户端,您将在域上下文的User集合上调用Remove
方法。
在接收方,它会经历所有更改并说:
MembershipServiceUser
参数?”然后用变更集中的对象调用该方法......