2012-02-22 61 views
0

我再次需要一些关于从silverlight调用域服务类方法的帮助。如何从域服务类调用方法

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

Using ASP.net membership to get aspnet_Users in 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方法?

任何帮助,非常感谢。

亲切的问候,

奥尼尔

更新

感谢您的信息高科技型。我仍然需要解决一个问题。也许我仍然没有做正确的事情。

我现在正在创建一个MembershipServiceUser的新实例,我们称之为msu。 然后分配msu.UserName和msu.Email用户的详细信息,在那之后调用

context.MembershipServiceUsers.Remove(msu) 

其中上下文是我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 =真 而这样的变更? - > RemovedEntities = 1,BU t所以EntitiesInError的结果是“枚举没有结果”

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

回答

1

RIA服务通过创建更改集(实际上是一组更改)并仅将这些更改发送到服务器来工作。执行CRUD的方法更像是实体框架,而不是直接的方法调用。

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

在接收端,它经历的种种变化,并说:“这是一个对象删除”

  • Q.
  • A.是...
  • 问:“它是什么类型的对象?
  • A. MembershipServiceUser
  • 问:“我们有一种叫做Delete的方法需要一个MembershipServiceUser参数吗?”
  • 答:是的...

然后调用从变更的对象,方法...

+0

感谢您的信息高科技型。 – Neill 2012-02-22 11:00:41

+0

请参阅更新的问题。我卡在那里,因为这个评论框太长了 – Neill 2012-02-22 11:07:09

+0

您必须引用从先前查询返回的对象的同一实例。你不能只是'新'一个。在上下文中搜索要删除的项目,然后删除该特定实例。 – 2012-02-22 11:34:59

相关问题