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; }