【问题标题】:How do I call a method from a Domain Service class如何从域服务类调用方法
【发布时间】:2012-02-22 20:50:02
【问题描述】:

在从 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 方法呢?

非常感谢任何帮助。

亲切的问候,

尼尔

更新

感谢 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 所以) 所以.HasError = true 虽然 ChangeSet -> RemovedEntities = 1,但 EntitiesInError 的结果是“枚举没有结果”

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

【问题讨论】:

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


    【解决方案1】:

    RIA 服务通过创建一个更改集(字面意思是一组更改)并将这些更改发送到服务器来工作。做 CRUD 的方法更像实体框架,而不是直接的方法调用。

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

    在接收端,它会经历所有的变化并说:

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

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

    【讨论】:

    • 请查看更新后的问题。我把它卡在那里,因为这个评论框太长了
    • 您必须引用从先前查询返回的对象的同一实例。你不能只 new 一个。在上下文中搜索您要删除的项目并移除该特定实例。
    • 嗨,请忽略更新 2。我整理了它为什么这样做。基本上归结为我没有正确的权限。发送所有帮助
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-28
    • 2018-02-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-23
    相关资源
    最近更新 更多