代码优先引用表

时间:2012-07-24 17:59:36

标签: asp.net-mvc-3 entity-framework ef-code-first code-first

我目前正在为我的模型上的一些映射属性而苦苦挣扎。这是我的两个型号。 我要做的是在我的表中只有唯一的PersonTypes(即MD,Nurse),而person模型引用这些personTypes。

public partial class Person
{
    public Person()
    {
        this.PersonTypes = new List<PersonType>();
        this.Contacts = new List<Contact>();
    }

    [Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public int Id { get; set; }

    public int FacilityId { get; set; }

    [DataType(DataType.Text), MaxLength(200), Required]
    public string FirstName { get; set; }

    [DataType(DataType.Text), MaxLength(200)]
    public string MiddleName { get; set; }

    [DataType(DataType.Text), MaxLength(200), Required]
    public string LastName { get; set; }

    public int? SpecialtyId { get; set; }

    public bool IsEnabled { get; set; }

    // Mapped Properties

    [ForeignKey("FacilityId")]
    public virtual Facility Facility { get; set; }

    [ForeignKey("SpecialtyId")]
    public virtual Specialty Specialty { get; set; }

    public virtual ICollection<PersonType> PersonTypes { get; set; }

    public virtual ICollection<Contact> Contacts { get; set; }
}

public partial class PersonType
{
    public PersonType()
    {
    }

    [Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public int Id { get; set; }

    [DataType(DataType.Text), MaxLength(200), Required]
    public string Name { get; set; }

    public bool IsEnabled { get; set; }
}

Person1 = MD,护士 - Person2 = MD - Person3 =护士,CNP

我不希望在上面的例子中,在我的PersonType表中有2次MD。这可能吗。感谢。

1 个答案:

答案 0 :(得分:0)

从你的例子中我收集到你在Persons和PersonTypes之间有多对多的关系。要使EF CodeFirst了解这一点,您必须在PersonType中创建对称导航属性:public virtual ICollection<Person> Persons