自定义类型作为主键

Custom Type as Primary Key

我目前在 Visual Studio 2015 年使用 EF6 代码优先。 我正在处理一个数据库,我想使用用户定义的类型作为主键。

这是我想要的一个简单示例:

public class ObjectIdType
{
    public string id { get; set; }
}

这将是用户定义的类型。

public class ClasseProva
{

    [Key][DatabaseGenerated(DatabaseGeneratedOption.None)]
    public ObjectIdType Id { get; set; }

}

这将是我要将我的自定义类型用作主键的实体。

当我像示例那样执行此操作时,当我尝试创建控制器时发生错误,错误是:属性 类型不是有效的键类型。

我发现您只能使用标量类型作为 PK,但我想知道我是否让我的 ObjectIdType 继承自 String 它会起作用吗? 我试着这样做(显然行不通):

public class ObjectIdType : String
{
    public string id { get; set; }
}

有什么方法可以将我的 ObjectIdType 定义为继承自 String 吗?或者有什么方法可以让自定义类型成为PK?

Is there any way to define my ObjectIdType as inheritance from String?

没有。字符串已密封。

Or there is any way to make a user-defined type a PK?

不是 100% 确定,但我认为你不能那样做。