我有几个型号:
Course.cs
public class Course
{
public Guid Id { get; set; }
public ICollection<ApplicationUser> Teacher { get; set; }
public string Name { get; set; }
public string ShortName { get; set; }
public DateTime CreationDate { get; set; }
public bool IsActive { get; set; }
}
Group.cs
public class Group
{
public Guid Id { get; set; }
public ApplicationUser Mentor { get; set;}
public string DisplayName { get; set; }
public string GroupName { get; set; }
public DateTime StartYear { get; set; }
public string InviteCode { get; set; }
public ICollection<ApplicationUser> Students { get; set; }
public ICollection<Course> Courses { get; set; }
}
ApplicationUser.cs
public class ApplicationUser : IdentityUser
{
[Required]
public string Firstname { get; set; }
[Required]
public string Surname { get; set; }
public bool Gender { get; set; }
public DateTime Birthdate { get; set; }
//[Required]
public string InviteCode { get; set; }
public Guid GroupId { get; set; }
[ForeignKey("GroupId")]
public Group CurrentGroup { get; set; }
public ICollection<Group> PastGroups { get; set; }
}
现在,当我尝试注册(使用Identity
)用户(甚至没有尝试给用户分组)时,我收到此错误:
SqlException:INSERT语句与FOREIGN KEY冲突 约束&#34; FK_AspNetUsers_Groups_GroupId&#34;。冲突发生在 数据库&#34; aspnet-Project_Dojo-3af15f80-8c62-40a6-9850-ee7a296d0726&#34;, table&#34; dbo.Groups&#34;,column&#39; Id&#39;。声明已经终止。
在我的modelBuilder
中,我为Group
,ApplicationUser
(学生)和外键之间的关系添加了一些逻辑:
protected override void OnModelCreating(ModelBuilder builder)
{
base.OnModelCreating(builder);
// Customize the ASP.NET Identity model and override the defaults if needed.
// For example, you can rename the ASP.NET Identity table names and more.
// Add your customizations after calling base.OnModelCreating(builder);\\
builder.Entity<ApplicationUser>()
.HasOne(p => p.CurrentGroup)
.WithMany(b => b.Students)
.HasForeignKey(p => p.GroupId);
}
我不知道这是做什么的,但是我一直在浏览一些Stackoverflow线程来获取此代码(迁移在没有它的情况下无法正常工作)。
我期待解决我的问题。再一次,我在注册时没有使用groups
做任何事情。
提前致谢!
答案 0 :(得分:4)
甚至没有尝试给用户一个群组
那么你的问题就在那里,这是必需的。
提供一个组,或通过使外键可为空(Guid? GroupId
)使其成为可选项。
因为它目前是一个不可为空的结构,所以它的默认值为全零(Guid.Empty
)。数据库中未知此FK,导致您看到错误。