EF学习笔记(一)

时间:2023-03-09 06:41:15
EF学习笔记(一)

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>