【发布时间】:2016-06-02 15:52:00
【问题描述】:
是否可以使用枚举作为表的主键?我有类似以下内容:
public enum SpecialId : uint {}
public class Thing
{
public SpecialId Id { get; set; }
}
public class MyContext : DbContext
{
public DbSet<Thing> Things { get; set; }
}
但我在初始化时收到以下错误:
EntityFramework.dll 中出现“System.InvalidOperationException”类型的未经处理的异常
附加信息:关键组件“Id”不是“Thing”类型的声明属性。验证它没有被明确地从模型中排除,并且它是一个有效的原始属性。
这确实表明它需要是一个原始类型(枚举只能转换为原始类型),但 EF post around enums 建议这是可能的
枚举作为键
此外,枚举类型的属性可以参与主键、唯一约束和外键的定义,也可以参与并发控制检查,并声明了默认值。
是我做错了什么还是根本不支持?
另一方面,我不知道我可以使用另一个未映射的属性来破解此功能,以将键转换为枚举。这不是我正在寻找的答案
【问题讨论】:
-
您是否考虑过添加
Key属性?还有什么版本的EF? -
是的,这没有帮助(例如
HasKey(x=>x.Id))无论如何,EF 应该按照惯例选择这个,但我确实尝试过这个,看看是否是问题 -
你是先写代码???
-
是,但在现有数据库上
-
它们可以作为主键的一部分,而不是作为唯一的主键。
标签: c# entity-framework