gpt4 book ai didi

c# - 添加 IdentityUser 作为其他模型的属性

转载 作者:行者123 更新时间:2023-11-30 15:17:29 26 4
gpt4 key购买 nike

我正在使用 ASP.NET Identity,使用 MVC5 和 EntityFramework 6.1.3。我的问题是我无法将 IdentityUser 作为属性添加到另一个模型。

我的应用程序允许用户创建一个项目:

 public class Project
{
public int ProjectID { get; set; }
public string ProjectName { get; set; }
public virtual ApplicationUser ApplicationUser { get; set; }
}

在创建新项目的操作方法中,我尝试像这样添加登录用户:

public ActionResult Create([Bind(Include = "ProjectID,ProjectName")] Project project)
{
if (ModelState.IsValid)
{
// I added the first two lines of code below.
var loggedInUser = System.Web.HttpContext.Current.GetOwinContext().GetUserManager<ApplicationUserManager>().FindById(System.Web.HttpContext.Current.User.Identity.GetUserId());
project.ApplicationUser = loggedInUser;
db.Projects.Add(project);
db.SaveChanges();
return RedirectToAction("Index");
}

return View(project);
}

loggedInUser 设置正确,它获得所有正确的属性。但是,当我尝试保存更新的上下文时,出现以下错误:

"Validation failed for one or more entities. The validation errors are: User name hellogoodnight@gmail.com is already taken."

因此,出于某种原因,我的代码显然试图创建一个新用户,而不是将现有用户添加到创建的项目中。为什么?这不是将 IdentityUser 作为导航属性添加到模型的方法吗?

最佳答案

我假设您有两个 表,它们具有一对多 关系

Project 实体只能附加一个useruser 实体可以有一个或多个project

因此,您需要在Project 类中附加外键,以允许Entity framework 正确地映射 关系并建立关系模型(数据库)和概念模型之间的关联。

 public class Project
{
public int ProjectID { get; set; }
public string ProjectName { get; set; }
public int ApplicationUserId{ get; set;}
public virtual ApplicationUser ApplicationUser { get; set; }
}

关于c# - 添加 IdentityUser 作为其他模型的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46204548/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com