zoukankan      html  css  js  c++  java
  • EF4.1之基础(实现Code First)

    Code First:顾名思义:就是通过代码生成数据库----通过类生成数据库中对应的表:

    首先定义两个类(就是建模的过程):

     1     public class Order
     2     {
     3         public int OrderId { set; get; }
     4         
     5         public string OrderCode { set; get; }
     6         
     7         public string CustormName { set; get; }
     8 
     9         public ICollection<OrderDetail> OrderDetails { set; get; }
    10       }
    1     public class OrderDetail
    2     {
    3         public int OrderDetailID{set;get;}
    4         public int OrderId { set; get; }
    5         public decimal Cost { set; get; }
    6         public Order Order { set; get; }
    7     }

    主要通过 DbContext实现的,所以要定义一个继承DbContext的基类

        public class DbEntities:DbContext
        {
            //对应实体的 两个类,生成对应的数据库中的表
            public DbSet<Order> Orders { set; get; }//set/get:代表是可读写的
            public DbSet<OrderDetail> OrderDetails { set; get; }
    
            static DbEntities()
            {
                Database.SetInitializer<DbEntities>(new DropCreateDatabaseIfModelChanges<DbEntities>());//如果没有这条语句,那么模型和 数据库架构不同时 就会报错
             }
     
          }

    重要讲解的是这个静态构造函数:相当于对于整个应用程序域建立了一个标准,当初始化 DbContext的时候就会通过调用Database 的初始化的方法 SetInitiallizer方法进行检查现在的模型和数据库的架构是否相同,如果不相同 就通过参数

    new DropCreateDatabaseIfModelChanges<DbEntities>() 删除数据库然后新建。

    这时可能大家就会问了,内部是通过什么进行检查模型和数据库的架构是否相同的呢?

    如果大家注意的话,就会发现,当我们生成数据库的时候会发现,生成我们定义的数据库表的同时页生成了一个 名字为EdmMetadata,而且他的里面一面只有两个一个字段(一个是Id,另一个就是Modelhash),这个Modelhash很重要:是通过模型生成的对应的hash值,当初始化的时候就会 先对当前模型生成对应的 hash 然后和这个字段进行比对,如果相同就不删除重建,如果不同就删除重建。

     

    表中有一条数据(Model属性 对 针对 数据库 的 架构  生成 的二进制数据,,每次对数据库进行操作的时候都会 对现有的 代码生成相应的  二进制数据 ,然后和  原来记录的数据 进行比对,如果不同,则删除数据库重建。)

  • 相关阅读:
    command injection命令注入
    使用burp进行brute force破解
    vim 常用命令
    mysql.ini 配置
    便捷的 chrome/Firefox扩展
    canves 图片旋转 demo
    lucene 学习一
    php 命令行方式运行时 几种传入参数的方式
    mysql 命令行参数
    java 实现WebService 以及不同的调用方式
  • 原文地址:https://www.cnblogs.com/xiaoxiaogogo/p/3419333.html
Copyright © 2011-2022 走看看