我创建了一个类部分
public class Section
{
public int Id { get; set; }
[Required]
public string Name { get; set; }
public string ChiefId { get; set; }
public virtual ApplicationUser Chief { get; set; }
public virtual ICollection<ApplicationUser> Staff { get; set; }
}
有一个标准类 ApplicationUser
public class ApplicationUser : IdentityUser
{
public string Name { get; set; }
public string Surname { get; set; }
public int? SectionId { get; set; }
[ForeignKey("SectionId")] <<<<<<<<<< добавлено, но не помогает
public virtual Section Section { get; set; }
public async Task<ClaimsIdentity> GenerateUserIdentityAsync(UserManager<ApplicationUser> manager)
{
// Обратите внимание, что authenticationType должен совпадать с типом, определенным в CookieAuthenticationOptions.AuthenticationType
var userIdentity = await manager.CreateIdentityAsync(this, DefaultAuthenticationTypes.ApplicationCookie);
// Здесь добавьте утверждения пользователя
return userIdentity;
}
}
我添加上下文
public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
{
public virtual DbSet<Section> Sections { get; set; }
* * *
为什么在数据库中创建了一个带有空值的附加字段Section_Id(图中显示了一个键的创建 - 一个注释掉的值)?
并且当它从数据库中删除时,控制器中会抛出异常
有没有办法摆脱这个额外的领域?


在 Entity 框架中,为了创建一对多关系,您必须在创建该关系的每个类中对其进行描述。在一类(一)中存在两个字段 - 正常和导航。(见下面的代码)
而另一个类(很多)也应该包含这种关系的实现——集合
该问题描述了一种这样的关系(SectionId,Section => Staff),而第二种关系没有完全实现。一侧有一对属性
需要在 ApplicationUser 类中实现集合,例如: