如何使用实体框架 C# 定义默认值

本文关键字:定义 默认值 框架 何使用 实体 | 更新日期: 2023-09-27 18:35:07

有问题的模型:

public class EmployeeType
{
    public int employeeTypeId { get; set; }
    public string typeName { get; set; }
    public virtual List<Employee> Employees { get; set; }
}
public class Employee
{
    public int employeeId { get; set; }
    public string userName { get; set; }
    public string firstName { get; set; }
    public string lastName { get; set; }
    public string password { get; set; }
    public int employeeTypeId { get; set; }
    public virtual EmployeeType EmployeeTypes { get; set; }
    public virtual List<PhoneNumber> PhoneNumbers { get; set; }
}

目前,我通过以下方式添加不同的值:

db.EmployeeType.Add(new EmployeeType
{
    typeName = "Administrator"
});
db.EmployeeType.Add(new EmployeeType
{
    typeName = "Seller"
});
db.EmployeeType.Add(new EmployeeType
{
    typeName = "Accountant"
});

但是,当我必须检查用户是否是管理员等的情况下,我必须检查linq查询并找出id是否等于Employee表中的id。

我如何在 EmployeeType 模型中定义默认记录,而不是通过多个 .添加行,以便我可以使用如下所示的内容:

if (db.Employee.FirstOrDefault(o => ...).servictypeId 
== EmployeeType.Administrator)
{ 
}

如何使用实体框架 C# 定义默认值

处理此问题的最佳方法是将 employeetypeId 转换为 EF 中的枚举。您可以通过将字段"转换"为 EDMX 中的枚举来轻松实现此目的。只需右键单击 edmx 模型设计屏幕中的属性,然后单击"转换为枚举"。

首先,你需要创建一个枚举,称为用户角色:-

enum UserRole : int
{
    Administrator = 1,
    Manager = 2,
    Client = 3
}

现在,当您想要创建新的用户角色时,您可以将它们添加到您的枚举中。

添加新用户时,您只需执行以下操作:-

new User object1 { Name = "Fred", UserRole = UserRole.Client};
dbContext.Save(object1);

EF 将知道在数据库中将 employeeTypeId 另存为 3。

优势变得更好,因为现在你可以说:-

if(User.UserRole == UserRole.Adminstartor)
{
  //Do Stuff
}