MVC代码优先:自己的模型和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 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; } } 

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

您需要在评论中使用UserId。

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

您还需要设置评论与用户之间的关系,以便您的帐户控制器具有类似的function。

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

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

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