C# 更新用户外键MVC 5

C# 更新用户外键MVC 5,c#,asp.net-mvc-5,entity-framework-6,asp.net-identity,C#,Asp.net Mvc 5,Entity Framework 6,Asp.net Identity,目前,我有一个自定义用户 公共类应用程序用户:IdentityUser { 公共应用程序用户() { this.applicators=新列表(); } 公共可空过期{get;set;} 公共int活动{get;set;} 上市公司{get;set;} 公共部门部门{get;set;} 公共ICollection申请者{get;set;} 公共异步任务GenerateUserIdentityAsync(ApplicationUserManager) { var userIdentity=wait

目前,我有一个自定义用户

公共类应用程序用户:IdentityUser
{
公共应用程序用户()
{
this.applicators=新列表();
}
公共可空过期{get;set;}
公共int活动{get;set;}
上市公司{get;set;}
公共部门部门{get;set;}
公共ICollection申请者{get;set;}
公共异步任务GenerateUserIdentityAsync(ApplicationUserManager)
{
var userIdentity=wait manager.CreateIdentityAsync(这是DefaultAuthenticationTypes.ApplicationOkie);
//在此处添加自定义用户声明
返回用户身份;
}
}
公司级

上市公司
{
公共int Id{get;set;}
公共字符串名称{get;set;}
公共ICollection部门{get;set;}
公共ICollection用户{get;set;}
}
我想更新用户类,使其在创建公司时指向公司;但是,更新不会保存。这是我试图在数据库中保存引用的控制器部分。ApplicationUser应指向数据库中公司的ID

/\u db用于我的身份上下文
int id=Convert.ToInt32(User.Identity.GetUserId());
ApplicationUser user=UserManager.FindById(id);
公司=新公司
{
Name=model.Name
};
_db.companys.Add(公司);
_db.SaveChanges();
user.Company=公司;
UserManager.Update(用户);

那么,对于用户与对象之间的关系,而不是与字符串或int等常规数据类型之间的关系,我有什么错误或误解呢?

请尝试将
虚拟
添加到导航属性中,例如
公共虚拟公司
公共虚拟ICollection…
。如果它们不是虚拟的,EF无法自动跟踪和/或保存它们

根据:

对于更改跟踪代理: 映射到数据模型中实体类型属性的每个属性都必须具有非密封(在Visual Basic中不可重写)、公共和虚拟(在Visual Basic中可重写)get和set访问器