【问题标题】:Relating data to an ASP.NET Member将数据与 ASP.NET 成员相关联
【发布时间】:2012-06-29 06:04:15
【问题描述】:
我正在基于 ASP.NET Membership 进行我的第一个项目,但在弄清楚如何将我的自定义数据与特定成员相关联时遇到了问题。这里的约定是什么?
例如,我想制作一个网络应用程序,人们可以在其中对不同的事物进行投票。为了确保人们不会一遍又一遍地投票,我想跟踪谁对什么投票进行了投票。 (我提供了我的预期用途示例,但主要对通用实现感兴趣)
有没有人知道已经在线编写的指南或其他好的资源?
IF** 这是相关的,我正在使用 EF4 进行我的数据库访问(我不直接需要 EF 和/或数据库访问方面的帮助,只需要成员资格与其他数据的关系) .目前,由于 GoDaddy 在每个数据库上为我提供的空间,我正计划将成员资格存储在 MsSQL 中,并将其余数据存储在 MySQL 中。
【问题讨论】:
标签:
c#
asp.net-mvc
asp.net-mvc-3
entity-framework
asp.net-membership
【解决方案1】:
您需要唯一标识当前登录的用户。您很可能想要使用MembershipUser.ProviderUserKey,这是MembershipProvider 的特殊风格提供的唯一标识符。对于SqlMembershipProvider,此属性的值为Guid。
因此您可以在投票记录中拥有一个属性,如下所示(假设您使用的是SqlMembershipProvider):
public class Vote
{
public Guid UserId { get; set; }
// etc.
}
你可以这样获取当前用户的ID:
Guid userId = (Guid)Membership.GetUser().ProviderUserKey;
Vote vote = new Vote { UserId = userId };
当然,在创建和保存新投票之前,您可以从这里查询以确保不存在 Votes 和 UserId == userId。