Entity Framework 基础操作(1)

EF是微软推出的官方ORM框架,默认防注入可以配合LINQ一起使用,更方便开发人员。

首先通过SQLSERVER现在有的数据库类生产EF

右键-》添加-》新建项,选择AOD.NET实体数据模型,来自数据库的Code FIrst

完成添加后会生成多个文件,并且在你的项目的配置文件中有数据库的链接字符串,下面文件中 “name=Test”,

Test就是连接字符串的name

public partial class TestDB : DbContext
{
    public TestDB()
        : base("name=Test")
    {
    }
    public virtual DbSet<School> School { get; set; }
    public virtual DbSet<Student> Student { get; set; }

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
}
public partial class School
{
    [StringLength(50)]
    public string SchoolId { get; set; }

    [StringLength(50)]
    public string Name { get; set; }

    public DateTime? CreateTime { get; set; }

    [StringLength(100)]
    public string Address { get; set; }

    [StringLength(50)]
    public string Telephone { get; set; }
}
public partial class Student
{
    [StringLength(50)]
    public string StudentId { get; set; }

    [StringLength(50)]
    public string Name { get; set; }
}
School和Student就是根据数据库表来生成的类

通过泛型来做基础操作
class BaseDB<T> where T : class, new()
{
    DbContext Db = new Test();

    //查询
    public IQueryable<T> LaodEntities(System.Linq.Expressions.Expression<Func<T, bool>> whereLambda)
    {
        return Db.Set<T>().Where<T>(whereLambda);
    }

    //更新
    public bool EditEntity(T entity)
    {
        Db.Entry<T>(entity).State = EntityState.Modified;
        return Db.SaveChanges() > 0;
    }

    //添加
    public bool AddEntity(T entity)
    {

        Db.Set<T>().Add(entity);
        return Db.SaveChanges() > 0;
    }

    //删除
    public bool DeleteEntity(T entity)
    {
        Db.Entry<T>(entity).State = EntityState.Deleted;
        return Db.SaveChanges() > 0;
    }
    //批量添加
    public bool AddBatch(IList<T> arrObj)
    {
        Db.Set<T>().AddRange(arrObj);
        return Db.SaveChanges() > 0;
    }
    //批量更改
    public bool UpdateBatch(IList<T> arrObj)
    {
        foreach (var item in arrObj)
        {
            Db.Entry<T>(item).State = EntityState.Modified;
        }
        return Db.SaveChanges() > 0;
    }
    //批量删除
    public bool DeleteBatch(IList<T> arrObj)
    {
        foreach (var item in arrObj)
        {
            Db.Entry<T>(item).State = EntityState.Deleted;
        }
        return Db.SaveChanges() > 0;
    }
    //分页
    public IQueryable<T> LoadPageEntities<s>(int pageIndex, int pageSize, out int totalCount, System.Linq.Expressions.Expression<Func<T, bool>> whereLambda, System.Linq.Expressions.Expression<Func<T, s>> orderbyLambda, bool isAsc)
    {
        var temp = Db.Set<T>().Where<T>(whereLambda);
        totalCount = temp.Count();
        if (isAsc)//升序
        {
            temp = temp.OrderBy<T, s>(orderbyLambda).Skip<T>((pageIndex - 1) * pageSize).Take<T>(pageSize);
        }
        else
        {
            temp = temp.OrderByDescending<T, s>(orderbyLambda).Skip<T>((pageIndex - 1) * pageSize).Take<T>(pageSize);
        }
        return temp;
    }
}

实际使用

BaseDB<Student> baseDB = new BaseDB<Student>();
baseDB.AddEntity(new Student {
    StudentId = Guid.NewGuid().ToString(),
    Name = "小红"
});
 
 

原文地址:https://www.cnblogs.com/VvVvLJS/p/11123566.html

时间: 2024-10-05 10:52:19

Entity Framework 基础操作(1)的相关文章

Entity Framework底层操作封装V2版本(1)

因为同志们一直给我提建议说,以前发的版本有问题.所以经过了我这一年多的使用和扩展,现在方法基本稳定了.现在贴出来给大家使用: 首先上场的是数据库操作层: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Linq.Expressions; using System.Data.Objects.DataClasses; using System.Refl

Entity Framework底层操作封装V2版本(2)

这个类是真正的数据库操作类,上面的那个类只是调用了这个封装类的方法进行的操作 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Linq.Expressions; using System.Data.Entity; using System.Data.Linq; using System.Data.Objects; using System.Refl

Entity Framework底层操作封装V2版本(3)

现在是附加的,组合查询需要的扩展类.大家知道lanmda表达式的组合条件比较麻烦,所以就加了一样一个类,方便进行组合查询: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Linq.Expressions; namespace JFrame.AccessCommon { public static class PredicateExtensions

Entity Framework底层操作封装V2版本(4)

这个版本里面,因为涉及到了多库的操作,原有的系统方法不能做到这样的事情了.所以这里有了一点区别 这个类的主要用作就是,连接字符串的作用,默认是指向默认配置里面的,但是你可以指向其他的连接 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Configuration; namespace JFrame.Dal { public class DataBa

Entity Framework底层操作封装V2版本(5)

这个框架到现在最大的变化马上就要出现了,哪就是对缓存的使用.因为系统经常要去读取数据库数据,但是大家知道,数据库的处理能力是有限的,所以对于一些数据量不大,但是又 需要经常去读取的功能来说,更好的方法就是使用缓存. 上面4的方法是不适用缓存的 using System; using System.Collections.Generic; using System.Linq; using System.Text; using JFrame.AccessCommon; using System.Da

.NET Entity Framework入门操作

Entity Framework是微软借鉴ORM思想开发自己的一个ORM框架. ORM就是将数据库表与实体对象(相当于三层中的Model类)相互映射的一种思想. 最大的优点就是非常方便的跨数据库平台.因为该技术不需要知道用的是什么数据库,这也是.net中Linq能To任何对象的原因. 这门技术为什么可以跨平台呢?是因为它只需要修改一下config文件就可以了,只要指定连接字符串,驱动程序,就可以根据不同数据库生成不同的Sql语句,当你的项目用户用到不同的数据库时,就不需要像修改SQL语句了. E

实体框架- Entity Framework 基础篇

以前写数据层D层的时候里面有好多的SQL语句,如何省略到繁琐的SQL语句,微软提供了一种很好的方式-实体框架-Entity Framwork.一种对象映射机制,支持.NET开发人员使用域特定对象来出来关系数据,消除了对开发人员通常需要编写的大部分数据访问代码的需求. ADO.NET Entity Framework 是微软以 ADO.NET 为基础所发展出来的对象关系对应 (O/R Mapping) 解决方案.实体框架Entity Framework是ADO.NET中的一组支持开发面向数据的软件

Entity Framework基础—第二篇

实体框架(Entity Framework) 简称EF,属于数据持久(持久保存)架里面的一种,其他的还有NHibernate,ibaties,Dapper.PetaPOCO...等,都是基于ORM思想. 首先介绍下O/R Mapping(ORM) 1.什么是ORM?ORM指的是面向对象的对象模型和关系数据库的数据结构之间的相互转化,可以理解为把表实体和表相互转化(在任何平台都适用,如php,java等). 传统ADO.net操作数据库: 基于ORM思想操作数据库: 接下来我们就一步步创建项目:

Entity Framework 基础

一.什么是Entity Framework 微软官方提供的ORM工具,ORM让开发人员节省数据库访问的代码时间,将更多的时间放到业务逻辑层代码上.EF提供变更跟踪.唯一性约束.惰性加载.查询事物等.开发人员使用Linq语言,对数据库操作如同操作Object对象一样省事. EF有三种使用场景,1. 从数据库生成Class,2.由实体类生成数据库表结构,3.  通过数据库可视化设计器设计数据库,同时生成实体类. O/RM是什么? ORM 是将数据存储从域对象自动映射到关系型数据库的工具.ORM主要包