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

时间:2013-08-19 11:41:59

标签: c# asp.net asp.net-mvc entity-framework simplemembership

我目前正在开发一个活动日历网站,在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; }
}

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

2 个答案:

答案 0 :(得分:2)

您需要在评论中使用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; }
    }

答案 1 :(得分:1)

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

因此,您需要将其他模型存储到Microsoft存储位置,直接使用Microsoft功能并为此设置连接字符串 OR 实现Microsoft Membership以在相关数据库中存储用户信息,如{{3在C#中实现codefirst成员资格提供程序。您可以安装此软件包并学习编写自己的成员资格提供程序。通过搜索“MVC或aspnet成员资格提供商的自定义成员资格提供程序”,可以找到更多帮助。