MVC 5内置身份验证和自定义类。代码优先

时间:2013-12-13 10:11:30

标签: asp.net-mvc entity-framework asp.net-mvc-5 asp.net-identity

我是MVC的新手,对我这么光鲜。 MVC 5带有自己的内置身份验证,这非常棒,而且正是我所需要的。我不想重新发明轮子,所以我会用它。如果我需要为用户提供更多信息,我还看到了很多关于如何扩展它的帖子和信息。

我的问题是我需要另一个链接到登录用户的模型。想象一下,有一个登录用户的论坛有“帖子”。我需要一个'Post'类,它与用户有关系,ASP.NET已经完成了所有要创建的工作。

我尝试过这样的事情:

public virtual ApplicationUser CreatedBy { get; set; } 

然而,这不起作用,我不知道如何弄清楚它是如何工作的。在线任何教程或示例都集中在MVC的身份验证元素上,或实体框架端,您可以在其中创建自己的dbContext并在其中执行所有操作。我如何将这两者联系起来?

1 个答案:

答案 0 :(得分:1)

要从另一个类添加对applicationuser的引用,您可以尝试以下方法:

public class Post{
     public int Id { get; set; 
     public string Name { get; set; }

     public virtual ApplicationUser CreatedBy { get; set; } 
}

在您的控制器中创建操作(或您创建新帖子的位置): (为了清楚起见,为usermanager等添加了代码行)

var post = new Post { Name = "My new post" }
var userManager = new UserManager<ApplicationUser>(new UserStore<ApplicationUser>(new ApplicationDbContext()));
var currenApplicationUser = userManager.FindById(User.Identity.GetUserId());
var currentUser = db.Users.Find(currenApplicationUser.Id);
post.CreatedBy = currentUser;
db.Posts.Add(post);
db.SaveChanges();