自定义类型作为主键
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% 确定,但我认为你不能那样做。
我目前在 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% 确定,但我认为你不能那样做。