MVC代码优先:自己的模型和SimpleMembership用户之间的一对多关系

本文关键字:用户 SimpleMembership 之间 关系 一对多 模型 代码 自己的 MVC | 更新日期: 2023-09-27 18:28:15

我目前在一个活动日历网站上工作,在ASP.NET方面我还是个新手。我使用的是MVC4框架,以及MVC4模板附带的EntityFramework(CodeFirst)和SimpleMembershipProvider。我也在使用迁移——如果有兴趣的话。

到目前为止我得到了什么

我目前有两个模型,一对多关系,运行良好:

_Events.cs(必须这样命名,因为事件是保留的)

public class _Event
{
    public int _EventId { get; set; }
    public string Name { get; set; }
    public DateTime StartDate { get; set; }
    public DateTime EndDate { get; set; }
    public virtual List<Comment> comments { get; set; }
}

Comment.cs

public class Comment
{
    public int CommentId { get; set; }
    public string Text { get; set; }
    public int _EventId { get; set; }
    public virtual _Event _Event { get; set; }
}

问题

现在,我想从Membership模型中添加Comment和User之间的另一个一对多关系,但似乎不知道如何做到这一点

我想归档的目标是,我可以为每个事件提供一个命令列表,并打印出每个评论的用户信息。我试了好几种方法,但都没能奏效。我的最后一次尝试是这样的:

public class Comment
{
    // snip - see above
    public virtual UserProfile User { get; set; }
}

我非常感谢你提前提供的任何帮助。

MVC代码优先:自己的模型和SimpleMembership用户之间的一对多关系

你需要在你的评论中有UserId。

public class Comment
{
    // snip - see above
    public int UserId {get; set;}
    public virtual UserProfile User { get; set; }
}

您还需要设置您的评论和用户之间的关系,以便在您的帐户控制器中有类似的内容。

public class UserProfile
    {
        [Key]
        [DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
        public int UserId { get; set; }
        public string UserName { get; set; }
        public virtual ICollection<Comment> Comments { get; set; }
    }

在ASP.net MVC项目中,如果您想使用默认的Microsoft Membership Provider,请注意您需要实现类似角色提供者的成员系统,以便在您创建的模型和成员系统之间建立关系、导航和更多的功能主义者。Microsoft将用户相关信息存储在项目中的单独位置(如App_Data文件夹中的数据库)。

因此,您需要将其他模型存储到Microsoft存储位置,直接使用Microsoft函数并为此设置连接字符串实现Microsoft Membership以将用户信息存储在相关数据库中,如在C#中实现代码优先成员资格提供方的NUGET Package。您可以安装此软件包并学习编写自己的会员资格提供商。搜索"MVC或aspnet成员资格提供商的自定义成员资格提供商"可以找到更多帮助。