使用这种方式请首先安装EntityFramework4.1.exe,您可以去这里下载:
Code First是EF建模的第三种方式,也是最灵活的一种方式,这种方式需要自己手动编写代码实现实体对象、对象关系,并提供注解映射信息,这种方式的本质是将基于图形界面的Model First设计方式改为基于手动编写代码的方式,这并不意味着code就效率低下,通过代码生成工具支持,开发效率一样很高。
一对多的示例
一个游戏账号可以创建多个游戏角色
/// <summary>
/// 游戏账号
/// 通过Data Annotations实现实体到数据库结构的映射
/// </summary>
[Table("GameUsers")]
public class GameUser
{
[Key]
//[Column("GAME_USER_ID")]
[MaxLength(8)]
[DatabaseGenerated(DatabaseGeneratedOption.None)]
public string GameUserID { get; set; }
[Column("GAME_USER_NAME")]
[Required]
[MaxLength(32)]
public string GameUserName { get; set; }
[Column("GAME_USER_PASSWORD")]
[MaxLength(16)]
public string GameUserPassword { get; set; }
public DateTime GameUserTime { get; set; }
/// <summary>
/// 该属性不被映射
/// </summary>
[NotMapped]
public string Comment { get; set; }
[ConcurrencyCheck]
[Timestamp]
public byte[] TimeStamp { get; set; }
/// <summary>
/// 游戏账户档案
/// </summary>
public GameUserArchive GameUserArchive { get; set; }
public virtual ICollection<GameRole> GameRoles { get; set; }
} [Key]
//[Column("GAME_USER_ID")]
[MaxLength(8)]
[DatabaseGenerated(DatabaseGeneratedOption.None)]
public string GameUserID { get; set; }
[Column("GAME_USER_NAME")]
[Required]
[MaxLength(32)]
public string GameUserName { get; set; }
[Column("GAME_USER_PASSWORD")]
[MaxLength(16)]
public string GameUserPassword { get; set; }
[MaxLength(16)]
public DateTime GameUserTime { get; set; }
/// <summary>
/// 该属性不被映射
/// </summary>
[NotMapped]
public string Comment { get; set; }
[ConcurrencyCheck]
[Timestamp]
public byte[] TimeStamp { get; set; }
/// <summary>
/// 游戏账户档案
/// </summary>
public GameUserArchive GameUserArchive { get; set; }
public virtual ICollection<GameRole> GameRoles { get; set; }
}