c# - .NET Core Entity Framework 中的状态实体 - 建议的实现
问题描述
我是全栈软件开发的新手,我有一个任务是在 .NET Core、Entity Framework Core(当涉及到后端部分)中创建一个简单的全栈 Web 应用程序,它将存储一些员工数据。现在,假设我有一个 Employee 实体。我们还需要以某种方式实现员工的职位(员工可以担任后端开发人员、前端开发人员、项目经理等职位)。这就是为什么我还创建了这个 EmployeePosition 类,以便在 Employee 中有一个 EmployeePosition 属性。我还有其他类似的状态实体,例如应用程序中的 EmployeePosition。
然后 EmployeePosition 将被播种到数据库中的一个单独的表中,因此它可以适用于“将使用”这个应用程序的任何公司(只需使用不同的种子数据)。我将使用旧数据库进行播种。
现在看来这可行,但对我来说似乎也有点太粗略了,因为每当我需要对存储库中的状态进行操作时,我都会使用状态的魔法 ID 号或硬编码方法中某处的状态名称属性(如果我没有针对给定操作的更智能的解决方法),例如“Switch(Position.Name) case “front-end”:do stuff”等。
我能否就如何更好地实施这一点获得建议或指导,我在这里走得好吗?
在 EmployeePosition 中实际使用枚举作为数据类型会更好,关于如何实现它的任何建议?考虑到我必须使用旧数据库进行播种,我将不得不以某种方式从旧文件中创建我的枚举。
public class Employee
{
[Key]
public int Id { get; set; }
[Required]
public string FirstName { get; set; }
[Required]
public string LastName { get; set; }
[Required]
public string Image { get; set; }
[Required]
public string Email { get; set; }
[Required]
public string Phone { get; set; }
[Required]
public EmployeePosition Position { get; set; }
public class EmployeePosition
{
[Key]
public int Id { get; set; }
[Required]
public string Name { get; set; }
}
解决方案
您可以做的是Enum
为员工职位创建一个。
public enum EmployeePosition
{
Backend = 0,
Frontend = 1,
DBA = 2,
}
还有你的员工实体
public class Employee
{
[Key]
public int Id { get; set; }
[Required]
public string FirstName { get; set; }
[Required]
public string LastName { get; set; }
[Required]
public string Image { get; set; }
[Required]
public string Email { get; set; }
[Required]
public string Phone { get; set; }
[Required]
public EmployeePosition Position { get; set; }
}
然后你可以使用
If (Employee.Position == EmployeePosition.Backend)
{
// your logic.
}
推荐阅读
- c++ - JSON返回的字符串如何转换成中文?使用 C 或 C++
- android - 当用户从浏览器下载文件时,我如何启动我的应用程序?
- android - 运行 adb 命令时出现错误 3221226356
- python - 如何设置 Python 代码库以使用另一个 Python 代码库并将其打包到生产环境中?
- java - 是否有一种解决方法可以在 CSS 中为 Region 的宽度和高度使用百分比值?
- jquery - 如何改变我的目标通过 CSS 或 jQuery 与另一个
- mongodb - 如何增强查询mongodb慢
- javascript - 使用 Object.create 实现继承中改变值的问题
- c - 如何比较C程序文件中的字符串结构数组
- python-3.x - 将函数结果解压缩到单独的列表中?