我有Customers表:Customer(id,name status_id)。
我有状态表:状态(id,名称,代码)。
客户与状态之间有关系(FK):status_id(客户)= id(状态)。枚举与实体框架 - 枚举值独立于表行ID
在我状态枚举和客户类中的.NET代码:
enum Status {
status_1,
status_2,
status_3,
status_4
}
class Customer {
public virtual long id {get;set;}
public virtual string name {get;set;}
public virtual Status customer_status {get;set;}
}
的枚举没有从该数据库的状态行的值,因为我不希望创建的依赖代码中的数据(硬编码)。
如何使用实体框架以在edmx中显示客户类?
编辑:
所有我找到了解决方案假定枚举值都相同,客户表中的STATUS_ID。他们甚至没有对我非常重要的状态表,这是为了限制status_id的值的可能性。
@Ladislav Mrnka:非常appriciate帮助我。我不明白你的建议。实际上,存储在数据库中的值对代码是透明的 - 代码不应该关心值,而是代表状态表中代码的字符串。我想到了将字符串值转换为枚举类型的视图(与您的示例链接相同,但不是使用int - 使用字符串),但我不知道如何处理它。 – Naor 2011-04-20 20:30:58
@Naor:这更加复杂 - 你想要将值从导航属性映射到枚举。所以你必须将Statuses表添加到模型中。每次加载客户时都必须加载它,并且必须再次定义单独的非映射属性,这会将相关实体转换为枚举。并且请注意,非映射属性不能用于linq-to-entities查询。 – 2011-04-20 20:34:11
@Ladislav Mrnka:我能做什么?哪些“依赖价值”的可能性我有?我有我的表中的数据。改变我的代码中的所有枚举是很多工作。 – Naor 2011-04-20 20:45:14