有问题的模型:
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模型中定义默认记录,而不是通过多个.Add行添加值,以便我可以使用以下内容:
if (db.Employee.FirstOrDefault(o => ...).servictypeId
== EmployeeType.Administrator)
{
}
答案 0 :(得分:0)
处理此问题的最佳方法是将employetyypeId转换为EF中的枚举。您可以通过将字段“转换”为EDMX中的枚举来轻松实现此目的。只需右键单击edmx模型设计屏幕中的属性,然后单击“转换为枚举”。
首先,您需要创建一个Enum,称为UserRole: -
enum UserRole : int
{
Administrator = 1,
Manager = 2,
Client = 3
}
现在,当你想制作新的UserRole时,你可以在你的枚举中添加它们。
在添加新用户时,您只需执行以下操作: -
new User object1 { Name = "Fred", UserRole = UserRole.Client};
dbContext.Save(object1);
EF将知道将employeeTypeId保存为数据库中的3。
优势变得更好,因为现在你可以说: -
if(User.UserRole == UserRole.Adminstartor)
{
//Do Stuff
}