EF(EntityFramwork)实体框架:主要是将实体类(EntityClass)和数据表(Table)进行映射(Map)。

     EF核心对象:

  • DbContext   (数据访问核心对象)       

               DbContext的构造函数

      •  public EFContext()

连接的数据库名与类名相同,为EFContext,这是一种约定俗成

      • public EFContext(): base("dbname") 

 连接的数据库名为传入的参数

      • public UnicornsContext():base("name=dbname")

                  数据连接信息为webconfig中的connectionStrings节点下的为dbname的连接字符串

  DbContext所有数据库实体和映射关系都要在DbContext进行注册

            

  public DbSet<School> Schools { get; set; }

        protected override void OnModelCreating(DbModelBuilder modelBuilder)
        {
            modelBuilder.Configurations.Add(new SchoolMap());
        }
  •  Database   (数据库对象)   

          Database是通过EntityContext.Database进行访问的

          

 DbCommand command = Database.Connection.CreateCommand();
            command.Parameters.AddRange(parameters);
            command.CommandType = CommandType.Text;
            command.CommandText = query;

            if (Database.Connection.State != ConnectionState.Open) Database.Connection.Open();

            using (command)
            using (IDataReader reader = command.ExecuteReader(CommandBehavior.CloseConnection)) //当DataReader对象被释放掉以后,数据库连接会自动关闭
            {
                command.Parameters.Clear();
                return new EntityDataTable(reader);
            }

 

          可以访问connection,并且可以dbcommand执行sql命令

            Database.ExecuteSqlCommand(sql):执行sql语句,一般用户更新表

            Database.SqlQuery<T>(sql)或Database.SqlQuery(sql):执行sql,并将执行结果返回成IEnumerable对象

DbSet<TEntity>    

  •  DbSet<TEntity>(表对象)   

         Table.SqlQuery(sql):执行一段sql返回DbSqlQuery<TEntity>对象,可以.toList()成List<TEntity>