2013-09-30 20 views
1

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

public class PersonId 
{ 
    int Id; 
} 

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

我可以映射这个班EF?

回答

1

将类作为主键是不可能的。使用Entity Framework主键必须是原始类型或字节[]。

如果您想为主键以外的事情做类似的事情,您可以使PersonId类成为复杂类型。

[ComplexType] 
public class PersonId 
{ 
    int Id; 
} 

或用流利的API

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

,但你将不能够使用该ID作为实体的主键

+0

不幸的是使用它作为一个主键是关键要求; p – joozek

+0

然后你想要做的事情不能完成。只有原始字节或字节[]可以用作实体框架的主键。 –

相关问题