整理的有用的一些EF的CommonDAL小封装
CommonDAL封装:
using System;
using System.Collections.Generic;
using System.Data.Entity;
using System.Linq;
using System.Linq.Expressions;
using System.Text; using YX.Model; namespace YX.BLL
{ /// <summary>
/// 基础 dal 类 T 对应数据泛型
/// </summary>
public class CommonDAL<T> : IDisposable where T : class
{
/// <summary>
/// 当前上下文
/// </summary>
DbContext DB; #region 构造函数
public CommonDAL()
{
//默认db为mclentities
this.DB = DBHelper.CreateDB(ConnectionStr.ServiceEntities);
} public CommonDAL(string connName)
{
this.DB = DBHelper.CreateDB(connName);
} public CommonDAL(DbContext db)
{
if (db == null)
{
throw new ArgumentNullException("db");
}
this.DB = db;
} #endregion /// <summary>
/// 当前db
/// </summary>
public DbContext CurrDB
{
get
{
return this.DB;
}
set
{
this.DB = value;
}
} /// <summary>
/// 添加
/// </summary>
/// <param name="t">数据对象</param>
/// <returns>成功否</returns>
public bool Add(T t)
{
try
{
t = DB.Set<T>().Add(t);
return DB.SaveChanges() > ;
}
catch (Exception ex)
{
//添加错误日志
Log.Logger.AddLog(ex.Message, ex);
throw new Exception(ex.Message, ex);
}
} /// <summary>
/// 更新
/// </summary>
/// <param name="t">数据对象</param>
/// <returns>成功否</returns>
public bool Update(T t)
{
try
{
this.DB.Entry<T>(t).State = EntityState.Modified;
return this.DB.SaveChanges() > ;
}
catch (Exception ex)
{
//添加错误日志
Log.Logger.AddLog(ex.Message, ex);
throw new Exception(ex.Message, ex);
}
} /// <summary>
/// 删除
/// </summary>
/// <param name="t">数据对象</param>
/// <returns>成功否</returns>
public bool Delete(T t)
{
try
{
t = DB.Set<T>().Remove(t);
return DB.SaveChanges() > ;
}
catch (Exception ex)
{
//添加错误日志
Log.Logger.AddLog(ex.Message, ex);
throw new Exception(ex.Message, ex);
}
} /// <summary>
/// 返回query
/// </summary>
/// <returns>查询接口</returns>
public IQueryable<T> GetQuery()
{
var query = DB.Set<T>();
return query;
} /// <summary>
/// 根据主键查询
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
//public abstract T Get(Key id); /// <summary>
/// 返回所有值
/// </summary>
/// <returns></returns>
public List<T> GetAll()
{
var dbQuery = this.GetQuery();
return dbQuery.ToList();
} /// <summary>
/// 释放
/// </summary>
public void Dispose()
{
this.CurrDB.Dispose();
}
}
}
DBHelper:
using System;
using System.Collections.Generic;
using System.Data.Entity;
using System.Linq;
using System.Text; namespace YX.BLL
{
/// <summary>
/// 数据上下文创建类
/// </summary>
public class DBHelper
{
/// <summary>
/// 创建上下文db方法
/// </summary>
/// <param name="connName"></param>
/// <returns></returns>
public static DbContext CreateDB(string connName)
{
return new DbContext(connName);
}
}
}
接下来就是在BaseBLL中去调用DAL:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;using YX.Entitys;
using YX.Model.SZR;
using YX.Log; using System.Reflection; namespace YX.BLL.ShenZhouRong
{
public class SZRBaseBLL : BaseBLL
{
/// <summary>
/// 数据操作类
/// </summary>
public CommonDAL<TB_SZR_InterfaceLog> dal; private string _AppID = null;
/// <summary>
/// 当前APPID
/// </summary>
public string CurrentAppID
{
get
{
return this._AppID;
}
set
{
this._AppID = value;
}
}
/// <summary>
/// 构造函数
/// </summary>
public SZRBaseBLL()
{
dal = new CommonDAL<TB_SZR_InterfaceLog>();
} /// <summary>
/// 按 ID 获取
/// </summary>
/// <param name="id">id</param>
/// <returns>数据对象</returns>
public TB_SZR_InterfaceLog GetSingle(int id)
{
return dal.GetQuery().Where(s => s.Id == id).FirstOrDefault();
}
public void Add()
{
Model_11 tss = new Model_11
{
CreateDate = DateTime.Now,
ERROR_CODE = ERROR_CODE,
IDNO = IDNO,
NAME = NAME,
RESULT = RESULT
};
CommonDAL<Model_11> dal = new CommonDAL<Model_11>();
return dal.Add(tss);
}
}
}
整理的有用的一些EF的CommonDAL小封装的更多相关文章
- EF框架搭建小总结--CodeFirst模型优先
前言:之前在下总结编写了一篇 EF框架搭建小总结--ModelFirst模型优先 博文,看到一段时间内该博文的访问量蹭.蹭蹭.蹭蹭蹭...往上涨(实际也不是很多,嘿嘿),但是还是按捺不住内心的喜悦(蛮 ...
- EF框架搭建小总结--CodeFirst代码优先
前言:之前在下总结编写了一篇 EF框架搭建小总结--ModelFirst模型优先 博文,看到一段时间内该博文的访问量蹭.蹭蹭.蹭蹭蹭...往上涨(实际也不是很多,嘿嘿),但是还是按捺不住内心的喜悦(蛮 ...
- IOS 学习资料整理{非常有用,强烈推荐}
绝地地的资源博客:我是雷锋不用谢~~啦啦啦 https://blog.csdn.net/kunga0814/article/details/82117090
- ORM框架 EF - code first 的封装
Code first 是Microsoft Entity Framework中的一种模式,CodeFirst不会有可视化的界面来进行拖动编辑DataBase-Entity,但会以一个类来进行对数据表关 ...
- EF框架搭建小总结--ModelFirst模型优先
前言:去年刚工作的时候,也是刚刚正式接触.net,当时了解了EF以及三种开发模式,Database First.Model First .Code First.公司用的开发模式是Database Fi ...
- ORM框架 EF - code first 的封装 优化一
上一节我们讲到对EF(EntityFramework)的初步封装,任何事情都不可能一蹴而就,通过大量的实际项目的实战,也发现了其中的各种问题.在这一章中,我们对上一章的EF_Helper_DG进行优化 ...
- 关于EF的一点小记录
今日新闻:朝鲜要改革开放了!!!比你牛逼的人都在努力,你还有理由懒惰吗? 宇宙强大IDE配套的EF问题记录 今天做数据添加时,Id我设置为int类型了,结果在做Add操作时报的错让我摸不着头脑,后来问 ...
- 整理一些《纸书科学计算器》的小Tips
本文最开始是在2016年的文章 Win10应用<纸书科学计算器>更新啦! 发表之后撰写的,当时那篇文章收到了不少人点赞,应用在国内市场的日下载量也突然上涨,让我感到受宠若惊,这里要感谢Wp ...
- 【C#】MVC+EF+LINQ 综合小项目
第一,创建数据库 create table category(id int primary key,name nvarchar(20)) create table news(id int primar ...
随机推荐
- 关于SQLServer2008数据如何导入SQL2005的解决办法,高版本数据导入低版本中。
最近需要把SqlServer2008 的数据库导入sqlserver2005 中.直接备份还原肯定不行.后来想到可以生成脚本执行sql语句,并选择数据可以一同进行执行. 点击右键--->任务-- ...
- git的一些相关知识
1.配置多个git远程仓库的ssh-Key切换(转自) 目前的git仓库如github都是通过使用SSH与客户端连接,如果只是固定使用单个git仓库的单个用户 (first),生成生成密钥对后,将公钥 ...
- LINQ TO ENTITY 根据Birthday获取Age
from emp in EmployeeInfo let years = EntityFunctions.DiffYears(emp.Birthday.Value,DateTime.Now) let ...
- Navicat for MySQL Mac 破解版
今天在macOS 系统下搭建 Java开发环境,需要配置MySQL,按照Windows的习惯,使用Navicat for MySQL 操作比较习惯.然后找不到比较好的破解版,这里介绍一个老版的,还是英 ...
- CLR via C# 提纲
第I部分 CLR基础第1章 CLR的执行模型 31.1 将源代码编译成托管模块 31.2 将托管模块合并成程序集 61.3 加载公共语言运行时 81.4 执行程序集的代码 101.4.1 IL和验证 ...
- C用函数指针模拟重载 C++重载
C中为什么不支持重载,即同一作用域内不允许出现同名函数? 我们都知道重载是c++面向对象的特性.c语言中是不存在的.所谓重载简单来说就是一个函数名可以实现不同的功能,要么输入参数不同或者参数个数不同, ...
- 为应用程序池 'DefaultAppPool' 提供服务的进程无法响应Ping
打开Windows 2008 的事件查看器,应用警告提示: 为应用程序池 'DefaultAppPool' 提供服务的进程无法响应 Ping.进程 ID 是 '2144'. 注意: 需要重新注册一vb ...
- 公网IP、私网IP
公网.内网是两种Internet的接入方式.公网接入方式:上网的计算机得到的IP地址是Internet上的非保留地址,公网的计算机和Internet上的其他计算机可随意互相访问. NAT(Networ ...
- SLAM中的EKF,UKF,PF原理简介
这是我在知乎上问题写的答案,修改了一下排版,转到博客里. 原问题: 能否简单并且易懂地介绍一下多个基于滤波方法的SLAM算法原理? 目前SLAM后端都开始用优化的方法来做,题主想要了解一下之前基于 ...
- mongodb备份恢复
注意:在备份文件存放目录的选择上有这样一个条件,文件存放目录不管有多深,都只能有它一个文件:(即除了备份文件之外只能存在文件夹,这个条件约束其整个目录树) 数据备份 : /mongodump --ho ...