如何确定是否已设置配置文件数据成员?

时间:2010-07-08 18:08:17

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

之前我问过这个问题,但是我复活了,因为我没有得到满意的答复。

我有一个配置文件变量,当我加载它时,它被赋予默认值。我需要检查是否已分配。通常我会使用is null比较,但这不起作用。

有人建议我使用看起来落后的FindProfilesByUserName。无论这种方法不起作用,因为它只告诉我用户是否创建了任何配置文件,而不是我感兴趣的特定成员数据。(这似乎是向后的,因为配置文件的整个目的是让它变得容易访问当前用户配置文件数据。这似乎是一个糟糕的设计,除非我遗漏了什么。)

我能看到的最后一个选项是为每个对象分配位,以查看它们是否被弄脏或设置。除非有必要,否则我不想这样做。

以下是FindProfilesByUserName示例:

ProfileInfoCollection profileInfo = ProfileManager.FindProfilesByUserName(ProfileAuthenticationOption.All, Membership.GetUser().UserName);
        if (profileInfo.Count > 0)
        {
            if (profileInfo[Membership.GetUser().UserName] != null)

我最后一个想法是存储集合,因为我认为我已经读过它们可以为空了。在我的情况下,我真的不需要一个集合,但这可能是最简单的解决方案。期待建议......我觉得我必须在这件事上遗漏一些明显的东西。

要清楚

这不起作用(如果http.context.profile.mydata!= null)

2 个答案:

答案 0 :(得分:0)

好吧,我很惊讶没有人遇到过这个问题:让我觉得我错过了一些基本的东西。我要为小组添加一个组和一个脏标志。如果任何人都可以提供另一种解决方案,我将赞扬答案。或者是对象的脏标志..

答案 1 :(得分:0)

只需设置代表null的默认值即可。例如对于int字段,将default设置为-1。

在我看来,您所描述的要求是一个边缘案例,在任何情况下都可以使用上述策略轻松实现。

我认为你断言这是概况模型的疏忽或缺点是不成熟的。

祝你好运。