zoukankan      html  css  js  c++  java
  • 小白学习之Code First(二)

    Code First约定:

    注:EDMX模板 (SSDL:存储模型=>数据库表 ,CSDL:概念模型=>实体,C-S模型=>存储和概念模型之间的映射关系)

    System.Data.Entity.ModelConfiguration.Conventions 命名空间

    此命名空间包含描述一组规格的类,在使用code first的时候,这些规则用于自动基于类定义配置概念模型(实体类)

    在上下文中我们创建了DbSet类集合,CodeFirst会根据DbSet为我们创建数据库表

     1     public class StudentInfo
     2     {
     3         public int ID { get; set; }
     4         public string Name { get; set; }
     5         public char Gender { get; set; }
     6         public DateTime Birth { get; set; }
     7 
     8         public ClassInfo  ClassInfo { get; set; }
     9 
    10         public Teacher Teacher { get; set; }
    11     }
    12     public class Teacher
    13     {
    14         public int ID { get; set; }
    15         public string Name { get; set; }
    16     }
    17   public class CSContext:DbContext
    18     {
    19         public CSContext():base("name=ConnStr") //创建名为配置文件中指定的数据库
    20         {
    21         }
    22         //学生和班级的集合
    23         public DbSet<StudentInfo> StudentInfos { get; set; }
    24         public DbSet<ClassInfo> ClassInfos { get; set; }
    25         /// <summary>
    26         /// 派生上下文模型初始化后,该模型锁定之前
    27         /// </summary>
    28         /// <param name="modelBuilder">DbModelBuilder 用于将 CLR 类映射到数据库架构。 此以代码为中心的方法称作“Code First”,可用于生成实体数据模型 (EDM) 模型</param>
    29         protected override void OnModelCreating(DbModelBuilder modelBuilder)
    30         {
    31             // 首次访问数据库时调用数据库初始值设定项 默认值是:CreateDatabaseIfNotExists<TContext>  
    32             //下面的值为模型发生改变时,删除数据库重建数据库    
    33             Database.SetInitializer(new DropCreateDatabaseIfModelChanges<CSContext>());
    34             base.OnModelCreating(modelBuilder);
    35         }
    36     }
    View Code

    尽管CSContext中没有定义Teacher这个类,但是运行程序后,code first照样为我们生成对应的数据库表

    code first推断出类,生成对应的数据库表及其主外键,主键默认的规则为类的属性名是否是id或类名+id,如果不是,就会报错。

    StudentInfo中定义了ClassInfo导航属性,而ClassInfo中定义了ICollection<StudentInfo>导航属性,那么code first自动为我们创建一对多的关系

  • 相关阅读:
    决策树
    Caffe:深入分析(怎么训练)
    Caffe深度学习计算框架
    Caffe参数交换源码分析
    Net的网络层的构建(源码分析)
    FineTuning机制的分析
    Caffe::Snapshot的运行过程
    AdaBoost算法
    SVM支持向量机
    SMO序列最小最优化算法
  • 原文地址:https://www.cnblogs.com/oren/p/7310512.html
Copyright © 2011-2022 走看看