使用EF 的简单的增删改查

using DAL;
using Model;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace BLL
{
    public class InfoManage
    {
        private BaseDal db;
        public InfoManage(BaseDal dal)
        {
            this.db = dal;
        }

        public InfoManage()
        {
            this.db = new BaseDal();
        }
        public bool Add(Info lst)
        {
            db.BeginTranscation();
            db.SaveOrUpdate(lst, true);
            return db.Commit() > 0;
        }

        public List<Info> GetList()
        {
            return db.GetEntity<Info>().ToList();
        }
    }
}

ADO.NET Entity Framework 是微软以 ADO.NET 为基础所发展出来的对象关系对应 (O/R Mapping) 解决方案,早期被称为 ObjectSpace。

 1.搭建EF环境

  

   在DAL层添加项目ADO.NET 实体数据库模型

在Model层添加EF 5.x DbContext生成器

修改inputFile的值

DAL 代码

  

using System;
using System.Collections.Generic;
using System.Data;
using System.Data.Common;
using System.Data.SqlClient;
using System.Linq;
using System.Linq.Expressions;
using System.Text;
using System.Threading.Tasks;

namespace DAL
{
    public class BaseDal : IDisposable
    {
        private TestEntities db = new TestEntities();

        private bool isTransaction = false;

        public IQueryable<T> GetEntity<T>() where T : class
        {
            return db.Set<T>().AsNoTracking().AsQueryable<T>();
        }

        /// <summary>
        /// 添加
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="lst"></param>
        /// <returns></returns>
        public int Add<T>(List<T> lst, bool isCommit = true) where T : class
        {
            foreach (var item in lst)
            {
                db.Entry<T>(item).State = System.Data.EntityState.Added;
            }

            if (isCommit && !isTransaction)
                return db.SaveChanges();
            else
                return 0;

        }

        /// <summary>
        /// 根据条件删除
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="predicate"></param>
        /// <returns></returns>
        public bool DeleteByCondition<T>(Expression<Func<T, bool>> predicate, bool isCommit = true) where T : class
        {
            db.Set<T>().Where<T>(predicate).ToList<T>().ForEach(d => db.Entry<T>(d).State = System.Data.EntityState.Deleted);
            if (isCommit && !isTransaction)
                return db.SaveChanges() > 0;
            else
                return false;
        }

        public bool UpdateByCondition<T>(Action<T> updateExpression, Expression<Func<T, bool>> predicate, bool isCommit = true) where T : class
        {
            var lst = db.Set<T>().Where<T>(predicate).ToList<T>();
            lst.ForEach(item =>
            {
                updateExpression(item);
                db.Entry<T>(item).State = System.Data.EntityState.Modified;
            });

            if (isCommit && !isTransaction)
                return db.SaveChanges() > 0;
            else
                return false;
        }

        public bool SaveOrUpdate<T>(T entity, bool isAdd = false, bool isCommit = true) where T : class
        {
            if (isAdd)
                db.Set<T>().Add(entity);
            else
                db.Entry(entity).State = System.Data.EntityState.Modified;

            if (isCommit && !isTransaction)
                return db.SaveChanges() > 0;
            else
                return false;

        }

        public bool SaveOrUpdateForList<T>(List<T> entities, bool isAdd = false, bool isCommit = true) where T : class
        {
            foreach (T entity in entities)
            {
                if (isAdd)
                    db.Set<T>().Add(entity);
                else
                    db.Entry(entity).State = System.Data.EntityState.Modified;
            }
            if (isCommit && !isTransaction)
                return db.SaveChanges() > 0;
            else
                return false;
        }

        public int ExecuteSqlCommand(string sql, bool isCommit = true)
        {
            db.Database.ExecuteSqlCommand(sql);
            if (isCommit && !isTransaction)
                return db.SaveChanges();
            else
                return 0;
        }

        public int ExecuteSqlCommand(string sql, bool isCommit, params object[] parameters)
        {
            db.Database.ExecuteSqlCommand(sql, parameters);
            if (isCommit && !isTransaction)
                return db.SaveChanges();
            return 0;
        }
        /// <summary>
        /// 执行存储过程
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="ProcName"></param>
        /// <param name="paramsStr"></param>
        /// <returns></returns>
        public List<T> ExecPro<T>(string ProcName, object[] paramsStr)
        {
            try
            {
                string sql = "exec " + ProcName;

                if (paramsStr.Length > 0)
                {
                    string str = string.Empty;
                    for (int i = 0; i < paramsStr.Length; i++)
                    {
                        if (str != string.Empty)
                            str += ",";

                        str += "@p" + i.ToString();
                    }
                    sql += " " + str;
                }

                return db.Database.SqlQuery<T>(sql, paramsStr).ToList();
            }
            catch (Exception ex)
            {
                return new List<T>();
            }
        }

        /// <summary>
        ///  执行存储过程 无超时
        /// </summary>
        /// <param name="ProcName"></param>
        /// <param name="parList"></param>
        public void ExecPro(string ProcName, List<SqlParameter> parList)
        {
            DbConnection conn = db.Database.Connection;
            if (conn.State == ConnectionState.Closed)
                conn.Open();
            DbCommand cmd = conn.CreateCommand();
            cmd.CommandType = System.Data.CommandType.StoredProcedure;
            cmd.CommandText = ProcName;
            cmd.CommandTimeout = 0;
            foreach (SqlParameter par in parList)
            {
                cmd.Parameters.Add(par);
            }

            cmd.ExecuteNonQuery();
        }

        public void BeginTranscation()
        {
            isTransaction = true;
        }

        public int Commit()
        {
            if (isTransaction)
            {
                isTransaction = false;
                return db.SaveChanges();
            }
            else
                return 0;
        }

        /// <summary>
        /// 执行SQL查询语句
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <returns></returns>
        public List<T> FindEntityListBySql<T>(string sql)
        {
            return db.Database.SqlQuery<T>(sql).ToList<T>();
        }

        public void Close()
        {
            if (db != null)
            {
                db.Dispose();
                db = null;
            }
        }

        public void Dispose()
        {
            if (db != null)
            {
                db.Dispose();
                db = null;
            }
        }
    }
}

BLL 代码

 1 using DAL;
 2 using Model;
 3 using System;
 4 using System.Collections.Generic;
 5 using System.Linq;
 6 using System.Text;
 7 using System.Threading.Tasks;
 8
 9 namespace BLL
10 {
11     public class InfoManage
12     {
13         private BaseDal db;
14         public InfoManage(BaseDal dal)
15         {
16             this.db = dal;
17         }
18
19         public InfoManage()
20         {
21             this.db = new BaseDal();
22         }
23
24
25         public bool Add(Info lst)
26         {
27             //db.BeginTranscation();
28             //db.SaveOrUpdate(lst, true);
29             //return db.Commit() > 0;
30             return db.SaveOrUpdate(lst, true, true);
31         }
32
33         public bool Save(Info info)
34         {
35             return db.SaveOrUpdate(info, false, true);
36         }
37
38
39         public bool Delete(Info info)
40         {
41             return db.DeleteByCondition<Info>(e => e.Name == info.Name, true);
42         }
43
44         public List<Info> GetList()
45         {
46             return db.GetEntity<Info>().ToList();
47         }
48     }
49 }

客户端调用

时间: 2024-10-25 01:41:23

使用EF 的简单的增删改查的相关文章

EF实现简单的增删改查

1.在项目中添加ADO.NET实体数据模型: 2.接着根据提示配置数据库连接,配置完毕之后项目中生成了大致如下的内容(EF6.x): 其中TestData.tt中的Consumer,Stores是创建时选的数据库中的表 3.在TestDataContext.cs中可以看到生成的实体框架的名字: 4.开始实现增删改查的功能(我是在控制台程序中实现的): 1.实例化该实体框架(我不知道这样叫对不对) EFTestEntities testEntities = new EFTestEntities()

EF5(6) 简单三层 增删改查

1:项目结构 2:每层添加对其他层的引用,这里我们把除了Web层之外的所有的层生成的文件都放到解决方案下的Library文件夹下,然后每个项目分别来引用里面的dll项目文件. 我们在Model项目上,右键属性->生成-> 在下面的输出里面,选择上一级的 Library文件夹 2.2 我们调整项目的生成顺序 ,在解决方案或者是任意项目上右键,选择 生成依赖项,调整各个项目的依赖,这样的目的就是调整项目的生成顺序. 注意,这里你选择依赖项,并没有给项目与项目之间增加了dll的引用,只是单纯的修改了

entity framework—简单的增删改查

应用程序对数据库执行CRUD时,通过entity framework方式,实际上是对DbContext的操作,DbContext是EF的入口,DbContext拿到对应的消息(CRUD)后,通过ORM中的Mapping来将对象O映射成数据库中的关系R. 下面就简单的实现一下利用entity framework实现简单的增删改查.首先要说明的是我已经建立了在解决方案中映射了数据库中表"Customer".所有的操作都是针对这张表. 1.增加 Customer customer = new

Mybatis使用之简单的增删改查

Mybatis使用之简单的增删改查 一:简介 主要记录最简单的数据的增删改查.下一章会有各个操作详细一点的配置说明.以Author表为例(见上一博客).Author表没有关联任何其他表.也没有特殊字段. 二:映射规则 2.1.映射文件中的sql方法与对应的XxxMapper接口中的方法映射规则: a)映射文件的namespace的值是XxxMapper接口的全限定名.即包名+接口名称 b)映射文件中表示增删改查的标签(select.insert.delete.update)的id的值是接口中方法

通过JDBC进行简单的增删改查

通过JDBC进行简单的增删改查(以MySQL为例) 目录 前言:什么是JDBC 一.准备工作(一):MySQL安装配置和基础学习 二.准备工作(二):下载数据库对应的jar包并导入 三.JDBC基本操作 (1)定义记录的类(可选) (2)连接的获取 (3)insert (4)update (5)select (6)delete 四.测试 五.代码分析 六.思考问题 前言:什么是JDBC 维基百科的简介: Java 数据库连接,(Java Database Connectivity,简称JDBC)

用CI框架向数据库中实现简单的增删改查

以下代码基于CodeIgniter_2.1.3版 用PHP向数据库中实现简单的增删改查(纯代码)请戳 http://www.cnblogs.com/corvoh/p/4641476.html CodeIgniter_2.1.3与PHP5.6的兼容问题请戳 http://www.cnblogs.com/corvoh/p/4649357.html 增: //insert//语法:$bool=$this->db->insert('表名',关联数组); $data=array( 'username'=

用PHP向数据库中实现简单的增删改查(纯代码,待完善)

<?php $con = mysql_connect("localhost:3306","root",""); if (!$con) { die('Could not connect: ' . mysql_error()); } mysql_select_db("test", $con); $result = mysql_query("SELECT * FROM user"); echo "

MyBatis学习--简单的增删改查

jdbc程序 在学习MyBatis的时候先简单了解下JDBC编程的方式,我们以一个简单的查询为例,使用JDBC编程,如下: 1 Public static void main(String[] args) { 2 Connection connection = null; 3 PreparedStatement preparedStatement = null; 4 ResultSet resultSet = null; 5 6 try { 7 //加载数据库驱动 8 Class.forName

通过JDBC进行简单的增删改查(以MySQL为例) 目录

通过JDBC进行简单的增删改查(以MySQL为例) 目录 前言:什么是JDBC 一.准备工作(一):MySQL安装配置和基础学习 二.准备工作(二):下载数据库对应的jar包并导入 三.JDBC基本操作 (1)定义记录的类(可选) (2)连接的获取 (3)insert (4)update (5)select (6)delete 四.测试 五.代码分析 六.思考问题 前言:什么是JDBC 维基百科的简介: Java 数据库连接,(Java Database Connectivity,简称JDBC)