zoukankan      html  css  js  c++  java
  • 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实现:



    使用示范:



    生成的表结构如下:




  • 相关阅读:
    1105 Spiral Matrix (25分)(蛇形填数)
    1104 Sum of Number Segments (20分)(long double)
    1026 Table Tennis (30分)(模拟)
    1091 Acute Stroke (30分)(bfs,连通块个数统计)
    1095 Cars on Campus (30分)(排序)
    1098 Insertion or Heap Sort (25分)(堆排序和插入排序)
    堆以及堆排序详解
    1089 Insert or Merge (25分)
    1088 Rational Arithmetic (20分)(模拟)
    1086 Tree Traversals Again (25分)(树的重构与遍历)
  • 原文地址:https://www.cnblogs.com/Ruiky/p/2565647.html
Copyright © 2011-2022 走看看