如何使用Entity Framework C#定义默认值?

时间:2013-10-13 20:23:19

标签: c# linq entity-framework model

有问题的模型:

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)
{ 

}

1 个答案:

答案 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
}