EntityFramework - Code First - 建立主键外键

DEMO

  主键

class Teacher
{
    /// 主键
    /// 系统会自动以ID结束的这类创建主键,但有多个该类型的字段还是指定一个为好
    [Key]
    public int ID { get; set; }
    public int Name { get; set; }
}

  外键

class Student
{
    [Key]
    public int ID { get; set; }
    public int Name { get; set; }

    /// <summary>
    /// 方式一
    /// 指定导航属性,会自动生成外键,命名规则为:"表名_主键名"
    /// 自动生成外键 Teacher_TeacherID
    /// 只生成外键,在数据库中不生成字段
    /// </summary>
    public virtual Teacher Teacher { get; set; }

    /// <summary>
    /// 方式二
    /// 默认情况下与导航属性的主键名称相同的字段会自动被标记为外键
    /// 指定生成外键 Teacher_ID
    /// 只生成外键,在数据库中不生成字段
    /// </summary>
    public int Teacher_ID { get; set; }
    public virtual Teacher Teacher { get; set; }

    /// <summary>
    /// 方式三
    /// 通过[ForeignKey]标记指定实体类的属性为外键
    /// 指定生成外键 Teacher_ID
    /// 在数据库中生成外键和生成字段
    /// </summary>
    /// 允许外键有空值 public int? Teacher_ID{get;set;}  默认外键不能为空
   public int Teacher_ID { get; set; } [ForeignKey("Teacher_ID")] public virtual Teacher Teacher { get; set; } /// <summary> /// 方式四 /// 与导航属性的主键名称相同的字段会自动被标记为外键,然后指定字段对应的数据库中的列名 /// 指定生成外键 Teacher_ID /// 在数据库中生成外键和生成字段 /// </summary> [Column("Teacher_ID")] public int Teacher_ID { get; set; } public virtual Teacher Teacher { get; set; } }

  其他约束

//非空字段
[Required,MaxLength(50)] 
//[StringLength(50)] 同上MaxLength
public string DetailTitle { get; set; }

//设置长度
[StringLength(500)]
public string DetailDesc { get; set; }
//指定字段类型 [Column(TypeName="Money")] public decimal UnitPice { get; set; }

 

posted @ 2015-03-06 15:44  `Laimic  阅读(616)  评论(0)    收藏  举报