软件外包服务岗前技能训练(二)

目录

一、前言

二、ORM框架

然后接下来,我就单纯的讲一讲EF的使用:

进阶、封装EF的简单方法(具体根据自己的需求去加):

三、中间件

一、Session:

二、创建Session对象

三、读取Session数据

四、输出Session值

五、总结刚才使用Session作了两种储存,一种直接给Session赋值初始值,另一种是用操作符将Session转化List列表的形式,因而可以比第一种储存的数据更多。但是使用第二种的储存一定要注意Session的值在为空时,把Session转化列表形式,不然就会报错误。

总结:就这样了


一、前言

这个是由1演变出的2.第一篇就写着耍,这一篇才有东西

二、ORM框架

ORM(对象关系映射)框架是一种软件工具,用于在关系型数据库和面向对象编程语言之间建立映射关系。通过ORM框架,开发人员可以使用面向对象的方式来操作数据库,而不需要直接编写SQL语句。

常见的ORM框架包括:

  1. Hibernate:Hibernate是Java平台上最流行的ORM框架之一,它提供了丰富的功能来管理对象与数据库之间的映射关系,支持多种数据库。Hibernate可以自动生成SQL语句,还提供了缓存、事务管理等功能。

  2. Entity Framework:Entity Framework是微软开发的.NET平台上的ORM框架,它提供了一种强大且灵活的数据访问模型,支持Code First、Database First和Model First等多种开发模式。

  3. SQLAlchemy:SQLAlchemy是Python领域内最流行的ORM框架之一,它支持多种数据库后端,并提供了丰富的查询API和关系管理功能。

  4. Django ORM:Django是一个流行的Python Web框架,它内置了简单易用的ORM框架,开发人员可以通过定义模型类和字段来进行数据库操作。

  5. Spring Data JPA:Spring Data是一个开发框架家族,Spring Data JPA是其子项目之一,它为Java开发人员提供了简化数据访问的解决方案。

通过使用ORM框架,开发人员可以摆脱编写大量重复性SQL语句的工作,提高开发效率和数据库操作的灵活性。同时,ORM框架也提供了对象模型与数据库模型之间的映射,使得开发者更加专注于业务逻辑的实现而非数据库操作的细节。

然后接下来,我就单纯的讲一讲EF的使用:

首先在.net中使用EF是需要下载2个包的下面是介绍怎么安装:

  1. 安装Entity Framework NuGet包:在Visual Studio中的解决方案资源管理器中,右键单击你的项目,选择 "管理 NuGet程序包"。然后搜索 "EntityFramework",选择它并点击安装。

  2. 如果你使用的是Entity Framework Core,你需要搜索并安装 "Microsoft.EntityFrameworkCore" 包,还可能需要安装特定的数据库提供程序,比如 "Microsoft.EntityFrameworkCore.SqlServer" 或 "Microsoft.EntityFrameworkCore.MySql"。    

进阶、封装EF的简单方法(具体根据自己的需求去加):

这里是使用了泛型去做了一个简单的封装,主要是懒。后面不想写重复,然后这样去写他的一个性能得到了一个优化

using Entity;
using IDal;
using Microsoft.EntityFrameworkCore;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Linq.Expressions;
using System.Text;
using System.Threading.Tasks;

namespace Dal
{
    /// <summary>
    /// 所有Dal的父类
    /// </summary>
    public class BaseDal<T> : IBaseDal<T> where T : BaseEntity
    {
        RepositoryDbContext _dbContext;

        public BaseDal(RepositoryDbContext dbContext)
        {
            _dbContext = dbContext;
        }

      
        /// <summary>
        /// 添加
        /// </summary>
        /// <returns></returns>
        public bool CreateEntity(T entity)
        {
            //_dbContext.DepartmentInfos.Add(entity);
            _dbContext.Set<T>().Add(entity);
             int index = _dbContext.SaveChanges();
            if (index > 0)
            {
                return true;
            }
            else
            {
                return false;
            }
        }

        /// <summary>
        /// 真删除
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="entity"></param>
        /// <returns></returns>
        public bool DeleteEntity(T entity) 
        {
            _dbContext.Set<T>().Remove(entity);
            int index = _dbContext.SaveChanges();
            if (index > 0)
            {
                return true;
            }
            return false;
        }

        /// <summary>
        /// 批量真删除
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="entity"></param>
        /// <returns></returns>
        public bool BatchDeleteEntity(List<T> entity)
        {
            _dbContext.Set<T>().RemoveRange(entity);
            int index = _dbContext.SaveChanges();
            if (index > 0)
            {
                return true;
            }
            return false;
        }


        /// <summary>
        /// 通过id真删除
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="id"></param>
        /// <returns></returns>
        public bool DeleteEntityById(string id) 
        {
            var entity = _dbContext.Set<T>().FirstOrDefault(u => u.Id == id);
            if (entity != null)
            {
                _dbContext.Set<T>().Remove(entity);

                int index = _dbContext.SaveChanges();
                if (index > 0)
                {
                    return true;
                }
                return false;
            }
            else
            {
                return false;
            }
        }


        / <summary>
        /// 获取数据集
        /// </summary>
        public DbSet<T> GetDbSet() 
        {
            return _dbContext.Set<T>();
        }

   

        /// <summary>
        /// 更新
        /// </summary>
        /// <param name="entity"></param>
        /// <returns></returns>
        public bool UpdateEntity(T entity) 
        {
            _dbContext.Set<T>().Update(entity);
            int index = _dbContext.SaveChanges();
            if (index > 0)
            {
                return true;
            }
            return false;
        }

    }
}

三、中间件

这里的中间件的话,我就讲一讲session

一、Session:

是一个缓存机制,存储在服务端,当客户端(浏览器)关闭时即销毁。若长时间不使用且浏览器未关闭的情况下, 默认自动销毁时间为20分钟。Session储存服务端的数据可以直接传递到客服端,有点像起了桥梁连接的作用。而利用服务端数据优点是比较便捷,代码比较少;缺点是数据容易丢失,缓存期比较短 。因此用Session的对象保存用户数据的方法效率低,对于小量的用户数据,使用Session还是一个不错的选择。

二、创建Session对象

pubice static void CreatSession(){//存Session["user"] = "MySession";//可以直接不用声明对象的形式把数据储存Session["user"]中。List<类名> listSession= new List<类名>();//创建以listSession对象的List<类名>集合。//当判断Session["listSession"]不为空的时候,声明的Session的命名 用 as的操作符转换目标类型或者转换目标类型的派生类型。if (Session["listSession"] != null) {listSession = Session["listSession"] as List<类名>;}类名 对象1 = new 类名();对象1.属性 = "getSession";listSession.Add(对象1);//Add是Session添加对象的方法。由于listSession是类名的集合,所以Add()方法添加为类名对象。
}

三、读取Session数据

public static string readSession(){//取String username = Session["user"].ToString();//读取前面声明的Session["user"]时所赋的初始值,所以此时的username = MySeessionList<类名> listSession= new List<类名>();//创建以listSession对象的List<类名>集合。类名 对象2 = new 类名();if (Session["listSession"] != null) {listSession = Session["listSession"] as List<类名>;}if(listSession != null) {对象2.属性 = listSession[0].属性; //此时的对象2.属性 = 对象1.属性 = "getSession";} return username + "and" + 对象2.属性;
}

四、输出Session值

 public static void Main(string[] args){CreatSession();Console.WriteLine("Session Values is:{0}",readSession());Console.ReadLine();}

五、总结
刚才使用Session作了两种储存,一种直接给Session赋值初始值,另一种是用操作符将Session转化List列表的形式,因而可以比第一种储存的数据更多。但是使用第二种的储存一定要注意Session的值在为空时,把Session转化列表形式,不然就会报错误。

总结:就这样了

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值