自定义类型作为主键

时间:2017-09-07 14:28:12

标签: c# entity-framework inheritance code-first

我目前正在使用Visual Studio 2015上的EF6代码优先。 我正在开发一个数据库,我希望将用户定义的类型用作主键。

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

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

这将是用户定义的类型。

public class ClasseProva
{

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

}

这将是我想将自定义类型用作PrimaryKey的实体。

当我这样做时,我尝试创建控制器时发生错误,错误是:属性类型不是有效的键类型。

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

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

有没有办法将我的ObjectIdType定义为String的继承?或者有什么方法可以使用户定义的类型成为PK?

1 个答案:

答案 0 :(得分:3)

  

有没有办法将我的ObjectIdType定义为String的继承?

没有。字符串是密封的。

  

或者有什么方法可以将用户定义的类型设为PK?

不是100%肯定,但我认为你做不到。