代码优先 - 实体框架 - 如何公开外键

时间:2013-11-19 20:57:42

标签: c# entity-framework ef-code-first

我有以下数据对象:

public class Customer : System.Data.Entity.ModelConfiguration.EntityTypeConfiguration<Customer>
{
    public Customer ()
    {
        // this.HasRequired(a => a.EyeColorType).WithMany().HasForeignKey(a => a.EyeColorTypeID);
    }

    [Key]
    public int ID { get; set; }

    [Required]
    [MaxLength(100)]
    public string FirstName { get; set; }

    [Required]
    [MaxLength(100)]
    public string LastName { get; set; }

    [Required]
    [ForeignKey("EyeColorTypeID")]
    public EyeColorType EyeColorType { get; set; }
    // public int EyeColorTypeID { get; set; }

}

}

我要做的是在生成的Customer属性上公开字段EyeColorTypeID,并在DB中指定名称。

如果我删除了两个注释,它可以工作,但我想为此使用数据注释。像[ExposeForeignKey("EyeColorTypeID")]之类的东西,让它自动发生。

这可能吗?我该怎么做呢?

1 个答案:

答案 0 :(得分:3)

只需将其添加到模型中并使导航属性为虚拟(对于延迟加载):

public class Customer : //etc
{

   //your stuff

   [Required]
   public int EyeColorTypeID {get; set;}

   public virtual EyeColorType EyeColorType { get; set; }
}

EF的命名约定会将EyeColorTypeID绑定到EyeColorType导航属性。