C# 实体框架6,Java风格枚举

C# 实体框架6,Java风格枚举,c#,entity-framework-6,C#,Entity Framework 6,因此,我在C#应用程序中使用java风格的枚举/智能枚举。 当检查代码中的相等性时,我可以做一些事情,如(仅举一个例子) Manager是一个静态查找类,所以我不需要像常规实体那样持久化它们。 如何让EF6将此类视为枚举和 仅保留id 仅在im使用linq查询数据时使用id值 即: 其中(e=>e.EmployeeType==EmployeeTypes.Manager) 应该导致 select ... from Employees where EmployeeType = 1 在NHibern

因此,我在C#应用程序中使用java风格的枚举/智能枚举。 当检查代码中的相等性时,我可以做一些事情,如(仅举一个例子)

Manager是一个静态查找类,所以我不需要像常规实体那样持久化它们。 如何让EF6将此类视为枚举和

  • 仅保留id
  • 仅在im使用linq查询数据时使用id值 即:

    其中(e=>e.EmployeeType==EmployeeTypes.Manager)

  • 应该导致

    select ... from Employees where EmployeeType = 1
    
    在NHibernate中,我可以使用IUserType来实现这一点,但是我在EF6中没有发现类似的东西


    提前谢谢

    什么是
    Java风格的枚举
    枚举不仅仅是数字的别名,它们可能包含更多的数据和行为。例如:在扩展方法存在之前编写。请尝试将扩展属性添加到枚举。这是一种非常有效的设计模式,可以解决C#shortcommons和enums的问题,即使C#支持扩展属性,祝您好运,使用EF可以对它们做任何有用的事情。我假设您的示例代码只不过是一个示例,如果不是,您就错了。EF支持继承和多态性,因此您将拥有一个Manager类和Pleb类,这些类将包含它们所需的业务逻辑。使得不需要具有行为的枚举。事实上,C#在枚举中不支持behavious是一件好事。这并不能改变EF是垃圾的事实。
    select ... from Employees where EmployeeType = 1