我可以将类映射到int并将其用作主键吗?

时间:2013-09-30 10:20:09

标签: entity-framework orm

我想使用特定于目的的id类型(例如PersonId for Person类)。它要求我将自定义类(PersonId)映射到int 并将其用作主键

public class PersonId
{
    int Id;
}

public class Person
{
    PersonId Id;
    // ...
}

我可以在EF中映射这些类吗?

1 个答案:

答案 0 :(得分:1)

无法将类作为主键。使用Entity Framework主键必须是基本类型或byte []。

如果你想做除了主键以外的其他事情,你可以使PersonId类成为复杂类型。

[ComplexType]
public class PersonId
{
    int Id;
}

或使用流畅的API

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
    modelBuilder.ComplexType<PersonId>();
}

但您将无法将该Id用作实体的主键