将公司模型添加到科目类
本文关键字:添加 公司 模型 | 更新日期: 2023-09-27 17:49:17
我目前正在尝试在帐户模型类中添加一个额外的模型,如下所示
public class RegisterViewModel
{
[Required]
[EmailAddress]
[Display(Name = "Email")]
public string Email { get; set; }
[Required]
[StringLength(100, ErrorMessage = "The {0} must be at least {2} characters long.", MinimumLength = 6)]
[DataType(DataType.Password)]
[Display(Name = "Password")]
public string Password { get; set; }
[DataType(DataType.Password)]
[Display(Name = "Confirm password")]
[Compare("Password", ErrorMessage = "The password and confirmation password do not match.")]
public string ConfirmPassword { get; set; }
public int companyID { get; set; }
public virtual CompanyDetails company { get; set; }
}
public class CompanyDetails
{
[Key]
public int companyID { get; set; }
[StringLength(100, ErrorMessage = "The {0} must be at least {2} characters long.", MinimumLength = 1)]
[Display(Name = "Company Name")]
public string CompanyName { get; set; }
}
我不确定的是,如何创建具有公司类的DBSet,并且公司的ID列会显示在用户表中吗?
MVC 5 利用 Identity,其中默认带有 ApplicationUser
类。这是应用程序的"用户",也是实体框架保存到数据库中的内容。因此,您需要在此处添加其他关系,而不是RegisterViewModel
,顾名思义,它是视图模型,而不是实体。
身份模型.cs
public class ApplicationUser : IdentityUser
{
public async Task<ClaimsIdentity> GenerateUserIdentityAsync(UserManager<ApplicationUser> manager)
{
// Note the authenticationType must match the one defined in CookieAuthenticationOptions.AuthenticationType
var userIdentity = await manager.CreateIdentityAsync(this, DefaultAuthenticationTypes.ApplicationCookie);
// Add custom user claims here
return userIdentity;
}
public virtual CompanyDetails Company { get; set; }
}
生成迁移并更新数据库后,将创建dbo.CompanyDetails
表,并将该表的外键添加到dbo.AspNetUsers
(用于ApplicationUser
的表(
当然,您需要将属性保留在RegisterViewModel
上,以便使用该视图模型实际编辑这些字段,但您可以删除 virtual
关键字。virtual
关键字表示可以重写属性或方法,这对于实体上的导航属性是必需的,以便实体框架可以在它创建的代理类上附加延迟加载逻辑。这可能比您需要的信息更多,但无论长短,您的视图模型都不需要它。