Entity Framework使用建模之Code First 一对多

使用这种方式请首先安装EntityFramework4.1.exe,您可以去这里下载:

ADO.NETEntity Framework 4.1

Code First是EF建模的第三种方式,也是最灵活的一种方式,这种方式需要自己手动编写代码实现实体对象、对象关系,并提供注解映射信息,这种方式的本质是将基于图形界面的Model First设计方式改为基于手动编写代码的方式,这并不意味着code就效率低下,通过代码生成工具支持,开发效率一样很高。

一对多的示例

一个游戏账号可以创建多个游戏角色





说明:

实体到数据库结构的映射是通过默认的约定来进行的,如果需要修改的话,有两种方式,分别是:Data Annotations 和 Fluent API,本例使用的是Data Annotations 来修改实体到数据库结构的映射

以上类的编写中,我们用了很多C#的Attribute[特性]:

       Table:指定实体所对应的数据库的表名,不指定则对应的表名为类名的复数形式 

       Key:指定是否是主键,不指定则 Code First 会将名为“Id”或“<类名>Id”的字段推断为主键,且如果它的类型是"int"或"long"或"short"的话,则会在数据库中默认注册为 identity 字段。注:主键的推断与大小写无关 

DatabaseGenerated:指定字段的值在数据库中的生成方式

DatabaseGeneratedOption.None :不做任何处理

 

             DatabaseGeneratedOption.Identity:标识列

DatabaseGeneratedOption.Compute:计算列

              Required:指定为必填字段,即指定数据库对应的列不允许为 null 值

              MaxLength:指定字段的最大长度,未指定则为 max

              StringLength:指定字段的长度范围

              Column:指定字段所对应的数据库中的列名,默认情况下数据库中的列名同 Code First 中的字段名

              NotMapped:没有对应关系,即此字段不会在数据库中生成对应的列

              Timestam:指定对应的数据库中的列的类型为DateTime

              ForeignKey:指定外键的名称,默认情况下与导航属性的主键名称相同的字段会自动被标记为外键

              InverseProperty :指定导航属性的反转属性,默认情况下按实体的互相引用自行推断  

ComplexType :复杂类型,如果字段类型为一个实体类,则此字段会被自动标记为复杂类型,被标记为复杂类型的字段为必填字段,复杂类型的每个属性将作为所属类型的表的字段存在。

              Timestamp :将 Code First 中的类型为 byte[] 的字段对应到数据库中的类型为 timestamp 的列

              ConcurrencyCheck:指定字段为用于乐观并发检查的字段,为了简单,建议同时将此字段也标记为Timestamp

 

CodeFirstDbContext实现:



使用示范:



 

生成的表结构如下:




posted @ 2012-06-27 13:13  Ruiky  阅读(2766)  评论(0编辑  收藏  举报