C# 实体框架-将字段转换为枚举

C# 实体框架-将字段转换为枚举,c#,.net,entity-framework,enums,entity-framework-6,C#,.net,Entity Framework,Enums,Entity Framework 6,我的结构如下: CREATE TABLE [dbo].[Decisions]( [ID] [int] IDENTITY(1,1) NOT NULL, [DecisionName] [nvarchar](250) NOT NULL, CONSTRAINT [PK_Decisions] PRIMARY KEY CLUSTERED ( [ID] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_

我的结构如下:

CREATE TABLE [dbo].[Decisions](
    [ID] [int] IDENTITY(1,1) NOT NULL,
    [DecisionName] [nvarchar](250) NOT NULL,
 CONSTRAINT [PK_Decisions] PRIMARY KEY CLUSTERED 
(
    [ID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]

CREATE TABLE [dbo].[Vacancies](
    [ID] [int] IDENTITY(1,1) NOT NULL,
    [DecisionID] [int] NOT NULL,
    .....
 CONSTRAINT [PK_Vacancies] PRIMARY KEY CLUSTERED 
(
    [ID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]

ALTER TABLE [dbo].[Vacancies]  WITH CHECK ADD  CONSTRAINT [FK_Vacancies_Decisions] FOREIGN KEY([DecisionID])
REFERENCES [dbo].[Decisions] ([ID])
ON UPDATE CASCADE
ON DELETE CASCADE
GO

ALTER TABLE [dbo].[Vacancies] CHECK CONSTRAINT [FK_Vacancies_Decisions]
GO
所以,正如你所看到的,决策和空缺是一对多的,相互联系的。 好啊然后,我在.NET应用程序中创建一个ADO.NET实体数据模型,然后尝试将决策ID转换为枚举。完整的。然后我尝试编译我的应用程序,并得到以下错误:

错误2错误112:从属角色中所有属性的类型 引用约束的类型必须与相应的 主体角色中的属性类型。财产类型 实体“VTSModel.空缺”上的“DecisionID”与 引用中实体“VTSModel.Decision”上的属性“ID” 约束“FK_决策”

为什么会这样?我在决策表中有4条记录(ID等式为1、2、3、4),用这些ID创建了4个枚举值,基础类型为Int32,表空缺完全为空(空缺实体的字段DecisionID也有Int32)


我使用的Visual Studio 2013+MVC 5+实体框架6.1.2+MS SQL 2014与您的问题不太相关,但为什么您的表只包含自然键和代理键?如果一个
决策
除了其名称之外没有其他属性,那么就没有理由有一个单独的表。为了回答这个问题,
enum
在CLR中作为
int32
实现,但它不是
int32
。它是一个单独的类型,因此在EF世界中,您不能使用它引用另一个实体中的
int32
。@Keith Payne您是否建议我在其他表中使用类似“This is a decision bla bla bla bla”的字符串而不是ID?并始终检查此字符串是否相同,但不是“this is a decision bla bla bla bla bla”(来自小写字母)例如?@Keith Payne我是否也要将空缺中的DecisionID更改为枚举类型?是的,您可以将ID更改为相同的枚举类型以使其正常工作。