我是第一次在.NET核心应用程序接口中使用实体框架(使用最新版本的.NET核心)。
目前我有两个课程:
public class Employee
{
public int Id { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public string Gender { get; set; }
public DateTime JoinedCompany { get; set; }
public ICollection<Skill> Skills { get; set; }
}
public class Skill
{
public int Id { get; set; }
public string SkillName { get; set; }
}我还有一个DBContext类,它包含
public DbSet<Employee> Employees { get; set; }
public DbSet<Skill> Skills { get; set; }我可以用下面的代码来检索它:
public async Task<IReadOnlyList<Employee>> GetEmployeesAsync () {
return await _context.Employees
.Include(p => p.Skills)
.ToListAsync();
}现在,我使用实体框架迁移来创建表。使用现有的类,我得到了下面的表和两个表:
(1) "Employees“,列为: Id,FirstName,LastName,Gender,JoinedCompany
(2)“技能”,列为: Id、SkillName、EmployeeId
我用一些数据填充了这些表,并在postman中访问API的一个端点时返回了以下内容:
[
{
"firstName": "Jess",
"lastName": "Turner",
"gender": "F",
"joinedCompany": "2018-10-04T00:00:00",
"skills": [
{
"skillName": "T-SQL",
"id": 1
},
{
"skillName": "Angular",
"id": 2
},
{
"skillName": "Vue",
"id": 3
},
{
"skillName": "Redux",
"id": 4
}
],
"id": 1
},
{
"firstName": "Olivia",
"lastName": "Lu",
"gender": "F",
"joinedCompany": "2015-03-31T00:00:00",
"skills": [
{
"skillName": "Hadoop",
"id": 5
},
{
"skillName": "Azure Databricks",
"id": 6
},
{
"skillName": "Spark",
"id": 7
},
{
"skillName": "Python",
"id": 8
},
{
"skillName": "T-SQL",
"id": 9
}
],
"id": 2
},
{
"firstName": "Jonah",
"lastName": "Smythe",
"gender": "M",
"joinedCompany": "2020-08-11T00:00:00",
"skills": [],
"id": 3
}
]现在,我试图弄清楚的是如何设计类,以便在运行时使用实体框架创建数据库,这样我就可以得到三个表:
(1) "Employees“,列为: Id,FirstName,LastName,Gender,JoinedCompany
(1) "EmployeeSkills“,列为: Id,EmployeeId,SkillId
(2)“技能”,列: Id,SkillName
原因是我不想在每次为员工出现"SkillName“字符串时反复存储它。我只想用身份证。这也会改变我上面应用的GetEmployeesAsync方法。谢谢你。
发布于 2020-08-20 15:52:10
public class Employee
{
public int Id { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public string Gender { get; set; }
public DateTime JoinedCompany { get; set; }
public ICollection<EmployeeSkill> Skills { get; set; } = new HashSet<EmployeeSkill>();
}
public class Skill
{
public int Id { get; set; }
public string SkillName { get; set; }
public ICollection<EmployeeSkill> Emploees { get; set; } = new HashSet<EmployeeSkill>();
}
public class EmployeeSkill
{
public int EmployeeId { get; set; }
public Employee Employee { get; set; }
public int SkillId { get; set; }
public Skill Skill { get; set; }
}
public class MyDbContext : DbContext
{
public DbSet<Employee> Employees { get; set; }
public DbSet<Skill> Skills { get; set; }
public DbSet<EmployeeSkill> EmployeesSkills { get; set; }
}https://stackoverflow.com/questions/63500040
复制相似问题