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实现:



    使用示范:



    生成的表结构如下:




  • 相关阅读:
    [Leetcode] Two Sum
    [Leetcode] 4Sum
    [Leetcode] Word Break
    [Leetcode] Evaluate Reverse Polish Notation
    [Leetcode] Distinct Subsequences
    [Leetcode] Triangle
    [Leetcode] Single Number II
    [Leetcode] Convert Sorted Array to Binary Search Tree
    一起手写吧!Promise!
    一起手写吧!sleep函数!
  • 原文地址:https://www.cnblogs.com/Ruiky/p/2565647.html
Copyright © 2011-2022 走看看