0

我有两个实体:

public class Person {
    [Key]
    public string Name {get;set;}

    public virtual Phone homePhone {get;set;} 
    public virtual Phone cellPhone {get;set;}
}

public class Phone {
    [Key]
    public int PhoneNumber {get;set;}

    public virtual Person {get;set;} 
}

一个人可以拥有零个或一部家庭电话和零个或一部手机。(我认为这是一对一或零关系)。

如何使用 CodeFirst API 使用实体框架对此进行建模。我可以通过将 Person 设置为 Phone 的主键和外键来模拟 Person 和 Phone 之间的一对零/一关系,但是 homePhone 和 cellPhone 怎么能具有相同的 person 实体?反过来,我可以说电话和人之间存在一对零/一的关系,其中每个人都有两个电话外键?

4

2 回答 2

0

您可以添加另一个用于创建电话类型的表,然后每部电话必须至少具有一种电话类型:

public class Person
{
    [key]
    public string name {get;set;}

    public virtual ICollection<Phone> Phones {get;set;}
}

public class Phone
{
    [key]
    public int PhoneNumber {get;set;}

    public int PhoneTypeId {get;set;}
    public virtual PhoneType PhoneType {get;set;}
}

public class PhoneType
{
    [key]
    public int PhoneTypeId {get;set;}
    public string PhoneTypeDescription {get;set}
}
于 2013-04-30T01:20:02.783 回答
0

你应该考虑这样的事情:

public class Person {
    [Key]
    public string Name {get;set;}

    Public PersonPhone HomePhone{get; set;}

    Public PersonPhone CellPhone{get; set;}        
}   

public class Phone {
    [Key]
    public int PhoneNumber {get;set;}
}

public class PersonPhone {
    [Key]
    public virtual Phone Phone {get;set;}

    [Key]
    public PhoneType PhoneType {get;set;}
}

public enum PhoneType {
    HomePhone,
    CellPhone 
}
于 2013-01-22T05:33:51.487 回答