linq 数据库操作封装
来源:互联网 发布:股票持仓图生成软件 编辑:程序博客网 时间:2024/06/06 06:42
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using CRM.Model;
using System.Configuration;
using System.Linq.Expressions;
using System.Data.SqlClient;
using System.Data.Linq;
namespace CRM.DAL
{
/// <summary>
/// Linq数据访问层
/// </summary>
public class LinqHelper
{
/// <summary>
/// 获得数据上下文
/// </summary>
/// <returns></returns>
public CRMDBDataContext GetDataContext()
{
string conn = ConfigurationManager.ConnectionStrings["LinqConnection"].ConnectionString;
//string conn = "server=.;uid=sa;pwd=123456;database=lf_crm_db2";
CRMDBDataContext crmDB = new CRMDBDataContext(conn);
crmDB.Connection.Open();
return crmDB;
}
/// <summary>
/// 获取所有的数据
/// </summary>
/// <typeparam name="T"></typeparam>
/// <returns></returns>
public List<T> GetList<T>() where T : class
{
var db = GetDataContext();
if (!IsAtOnceLoad.IsLazyLoad)//为false时立即加载
{
return db.GetTable<T>().ToList();
}
else
{
db.DeferredLoadingEnabled = false;
return db.GetTable<T>().ToList();
}
}
/// <summary>
/// 获取指定的单个实体
/// 如果不存在则返回null
/// 如果存在多个则抛异常
/// </summary>
/// <typeparam name="T">实体类型</typeparam>
/// <param name="predicate">Lamda表达式</param>
/// <returns>Entity</returns>
public T GetEntity<T>(Expression<Func<T, bool>> predicate) where T : class
{
var db = GetDataContext();
if (!IsAtOnceLoad.IsLazyLoad)
{
return db.GetTable<T>().Where<T>(predicate).SingleOrDefault();
}
else
{
db.DeferredLoadingEnabled = false;
return db.GetTable<T>().Where<T>(predicate).SingleOrDefault();
}
}
/// <summary>
/// 用SQL语句查询
/// </summary>
/// <typeparam name="T">实体类类型</typeparam>
/// <param name="sql">sql语句</param>
/// <param name="parameters">sql参数</param>
/// <returns>集合</returns>
public List<T> GetListBySql<T>(string sql, params SqlParameter[] parameters) where T : class
{
var db = GetDataContext();
if (!IsAtOnceLoad.IsLazyLoad)
{
return db.ExecuteQuery<T>(sql).ToList();
}
else
{
db.DeferredLoadingEnabled = false;
return db.ExecuteQuery<T>(sql).ToList();
}
}
/// <summary>
/// 添加实体
/// </summary>
/// <typeparam name="T">实体类类型</typeparam>
/// <param name="eneiey">实体对象</param>
public void InsertEntity<T>(T eneiey) where T : class
{
using (CRMDBDataContext db = GetDataContext())
{
db.GetTable<T>().InsertOnSubmit(eneiey);
db.SubmitChanges();
}
}
/// <summary>
/// 删除实体
/// </summary>
/// <typeparam name="T">实体类类型</typeparam>
/// <param name="predicate">Lamda表达式</param>
public void DeleteEntity<T>(Expression<Func<T, bool>> predicate) where T : class
{
using (CRMDBDataContext db = GetDataContext())
{
T entity = db.GetTable<T>().Where(predicate).First();
db.GetTable<T>().DeleteOnSubmit(entity);
db.SubmitChanges();
}
}
/// <summary>
/// 批量删除
/// </summary>
/// <typeparam name="T">实体类类型</typeparam>
/// <param name="list">实体集合</param>
public void DeletesEntity<T>(List<T> list) where T : class
{
using (CRMDBDataContext db = GetDataContext())
{
db.Transaction = db.Connection.BeginTransaction();
try
{
foreach (var item in list)
{
db.GetTable<T>().Attach(item);
db.Refresh(RefreshMode.KeepCurrentValues, item);
}
db.GetTable<T>().DeleteAllOnSubmit(list.AsEnumerable<T>());
db.SubmitChanges();
db.Transaction.Commit();
}
catch (Exception ex)
{
db.Transaction.Rollback();
throw new Exception(ex.Message);
}
}
}
/// <summary>
/// 修改实体
/// </summary>
/// <typeparam name="T">实体类类型</typeparam>
/// <param name="entity">实体对象</param>
public void UpadateEntity<T>(T entity) where T : class
{
using (CRMDBDataContext db = GetDataContext())
{
db.GetTable<T>().Attach(entity);
db.Refresh(RefreshMode.KeepCurrentValues, entity);
db.SubmitChanges(ConflictMode.ContinueOnConflict);
}
}
}
}
- linq 数据库操作封装
- linq 数据库操作封装(2)
- LINQ操作数据库
- Linq操作SQL数据库
- Linq 与数据库操作
- JAVA:数据库操作封装
- 数据库操作封装--ExecuteNonQuery
- JAVA:数据库操作封装
- 数据库操作的封装
- 实验: 数据库操作封装
- 数据库基本操作封装
- 数据库相关操作封装
- 数据库操作封装
- android数据库操作封装
- 封装数据库操作
- 封装JAVA数据库操作
- JAVA:数据库操作封装
- 封装JAVA数据库操作
- 8种常见的Java不规范代码
- mysql中char与varchar的区别
- 转载 兼容iphone5开发获取屏幕分辨率的问题
- android 设置 TextView
- 今年暑假不AC?
- linq 数据库操作封装
- 一个明媚的早晨
- java mysql 大文件的读取 java.sql.Blob
- 解锁界面滑环增加多个方向功能
- linq 数据库操作封装(2)
- Serv-U.FTP.Server.Platinum.v12.1.0.6.MULTiLANGUAGE-SUBSTANCE
- Default style sheet for HTML 4 HTML标签CSS属性默认值
- (一)德雷福斯模型
- MFC学习之 怎么用VS2005打开 VS2008工程 方法