【发布时间】:2021-02-06 19:27:44
【问题描述】:
我有用户实体
public class User
{
public int UserId { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public string Email { get; set; }
public string Password { get; set; }
public ICollection<Technology> Technologies { get; set; } = new List<Technology>();
}
我有技术实体
public class Technology
{
public int TechnologyId { get; set; }
public string TitleTechnology { get; set; }
public int GroupId { get; set; }
public Group Group { get; set; }
public ICollection<User> Users { get; set; } = new List<User>();
}
我想创建多对多关系,所以我有这样的OnModelCreating 方法:
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
var groupList = new List<Group>
{
new Group {GroupId = 1, TitleGroup = ".NET"}
};
var technologyList = new List<Technology>
{
new Technology {TechnologyId = 1, GroupId = 1, TitleTechnology = ".NET 5"},
new Technology {TechnologyId = 2, GroupId = 1, TitleTechnology = ".NET Framework 4.8"},
new Technology {TechnologyId = 3, GroupId = 1, TitleTechnology = "EF 6"},
new Technology {TechnologyId = 4, GroupId = 1, TitleTechnology = "ASP.NET MVC 5"}
};
var userList = new List<User>
{
new User
{
UserId = 1, FirstName = "Serhii", LastName = "Yurko", Email = "test", Password = "test",
Technologies = new List<Technology> {technologyList[0], technologyList[1]}
}
};
modelBuilder.Entity<Technology>().HasOne(exp => exp.Group).WithMany(exp => exp.Technologies).HasForeignKey(exp => exp.GroupId);
modelBuilder.Entity<User>().HasMany(p => p.Technologies).WithMany(p => p.Users)
.UsingEntity(j => j.ToTable("UserTechnology"));
modelBuilder.Entity<User>().HasData(userList);
modelBuilder.Entity<Group>().HasData(groupList);
modelBuilder.Entity<Technology>().HasData(technologyList);
base.OnModelCreating(modelBuilder);
}
当我想创建迁移时,我会收到这样的异常 -
无法添加实体类型“用户”的种子实体,因为它有 导航“技术”集。要播种关系,请添加 'TechnologyUser (Dictionary
)' 的实体种子和 指定外键值 {'UsersUserId'}。考虑使用 'DbContextOptionsBuilder.EnableSensitiveDataLogging' 查看 涉及属性值。
如何建立适当的关系?
【问题讨论】:
-
请也显示组类
标签: c# asp.net entity-framework-core