Entity Framework Code First 常用方法集成
using System;
using System.Collections.Generic;
using System.Data.Entity;
using System.Linq;
using System.Linq.Expressions;
using System.Text;
using SnsDB;
using EntityFramework.Extensions;
using EntityFramework.Reflection;
using System.Data.SqlClient;
using System.Transactions; namespace SnsDAL
{
public partial class Repository
{
/// <summary>
/// 创建一条记录
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="model"></param>
/// <returns></returns>
public int Create<T>(T model) where T : class
{
int Result = 0;
using (SnsDB_Intermodal db = new SnsDB_Intermodal())
{
db.Set<T>().Add(model);
db.Configuration.ValidateOnSaveEnabled = false;
Result = db.SaveChanges();
db.Configuration.ValidateOnSaveEnabled = true;
return Result;
}
} /// <summary>
/// 根据主键修改实体的全部信息
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="model"></param>
/// <returns></returns>
public int Update<T>(T model) where T : class
{
int Result = 0;
using (SnsDB_Intermodal db = new SnsDB_Intermodal())
{
if (db.Entry<T>(model).State == EntityState.Detached)
{
db.Set<T>().Attach(model);
db.Entry<T>(model).State = EntityState.Modified;
}
db.Configuration.ValidateOnSaveEnabled = false;
Result = db.SaveChanges();
db.Configuration.ValidateOnSaveEnabled = true;
return Result;
}
} /// <summary>
/// 只删除一条记录
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="ids"></param>
public int Delete<T>(Expression<Func<T, bool>> express) where T : class
{
using (SnsDB_Intermodal db = new SnsDB_Intermodal())
{
T model = db.Set<T>().SingleOrDefault(express);
db.Set<T>().Remove(model);
return db.SaveChanges();
}
} /// <summary>
/// 根据条件获取一个实体
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="express"></param>
/// <returns></returns>
public T GetModel<T>(Expression<Func<T, bool>> express) where T : class
{
using (SnsDB_Intermodal db = new SnsDB_Intermodal())
{
T model = db.Set<T>().SingleOrDefault(express);
return model;
}
} /// <summary>
/// 根据条件获取列表
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="express"></param>
/// <returns></returns>
public IEnumerable<T> GetList<T>(Expression<Func<T, bool>> express) where T : class
{
using (SnsDB_Intermodal db = new SnsDB_Intermodal())
{
return db.Set<T>().Where(express).ToList();
}
} /// <summary>
/// 获取列表
/// </summary>
/// <typeparam name="T"></typeparam>
/// <returns></returns>
public IEnumerable<T> GetList<T>() where T : class
{
using (SnsDB_Intermodal db = new SnsDB_Intermodal())
{
return db.Set<T>().ToList();
}
} /// <summary>
/// 批量删除
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="express"></param>
/// <returns></returns>
public int DeleteRange<T>(Expression<Func<T, bool>> express) where T : class
{
int Result = 0;
using (SnsDB_Intermodal db = new SnsDB_Intermodal())
{
db.Set<T>().Where(express).Delete();
db.Configuration.ValidateOnSaveEnabled = false;
Result = db.SaveChanges();
db.Configuration.ValidateOnSaveEnabled = true;
}
return Result;
} /// <summary>
/// 批量添加
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="List"></param>
/// <returns></returns>
public int AddRange<T>(IList<T> List) where T : class
{
int Result = 0;
using (SnsDB_Intermodal db = new SnsDB_Intermodal())
{
db.Set<T>().AddRange(List);
db.Configuration.ValidateOnSaveEnabled = false;
Result = db.SaveChanges();
db.Configuration.ValidateOnSaveEnabled = true;
}
return Result;
} /// <summary>
/// 批量修改 例:xx.update(p=>p.id==1,p=>new xx{p.name="修改"});
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="where">条件</param>
/// <param name="updateExpression">修改的内容</param>
/// <returns></returns>
public int UpdateRange<T>(Expression<Func<T, bool>> where, Expression<Func<T, T>> updateExpression) where T : class
{
int Result = 0;
using (SnsDB_Intermodal db = new SnsDB_Intermodal())
{
using (TransactionScope Transaction = new TransactionScope())
{
db.Configuration.ValidateOnSaveEnabled = false;
db.Set<T>().Update(where, updateExpression);
db.Configuration.ValidateOnSaveEnabled = true;
Transaction.Complete();
Result = 1;
}
}
return Result;
} /// <summary>
/// 执行一条sql返回list
/// </summary>
/// <typeparam name="T">一般为ViewModel</typeparam>
/// <param name="strsql"></param>
/// <returns></returns>
public IEnumerable<T> GetList<T>(string strsql) where T:class
{
using (SnsDB_Intermodal db = new SnsDB_Intermodal())
{
return db.Database.SqlQuery<T>(strsql);
}
} /// <summary>
/// 执行一条sql返回list
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="strsql">一般为ViewModel</param>
/// <param name="paras">参数</param>
/// <returns></returns>
public IEnumerable<T> GetList<T>(string strsql, SqlParameter[] paras) where T : class
{
using (SnsDB_Intermodal db = new SnsDB_Intermodal())
{
return db.Database.SqlQuery<T>(strsql, paras);
}
} /// <summary>
/// 执行一条sql返回一个对象
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="strsql"></param>
/// <returns></returns>
public T GetList<T>(string strsql) where T : class
{
using (SnsDB_Intermodal db = new SnsDB_Intermodal())
{
return db.Database.SqlQuery<T>(strsql).Cast<T>().First();
}
} /// <summary>
/// 执行一条sql返回一个对象
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="strsql"></param>
/// <param name="paras">参数</param>
/// <returns></returns>
public T GetList<T>(string strsql,SqlParameter[] paras) where T : class
{
using (SnsDB_Intermodal db = new SnsDB_Intermodal())
{
return db.Database.SqlQuery<T>(strsql,paras).Cast<T>().First();
}
} /// <summary>
/// 执行一条sql,一般为添加或修改或删除操作
/// </summary>
/// <param name="strsql"></param>
/// <returns>受影响的行数</returns>
public int ExecuteSqlCommand(string strsql)
{
using (SnsDB_Intermodal db = new SnsDB_Intermodal())
{
return db.Database.ExecuteSqlCommand(strsql);
}
} /// <summary>
/// 执行一条sql,一般为添加或修改或删除操作
/// </summary>
/// <param name="strsql"></param>
/// <param name="paras">参数</param>
/// <returns></returns>
public int ExecuteSqlCommand(string strsql,SqlParameter[] paras)
{
using (SnsDB_Intermodal db = new SnsDB_Intermodal())
{
return db.Database.ExecuteSqlCommand(strsql,paras);
}
}
}
}
小人技术不才,以上仅提供参考。还希望大神多多指点。
再次推荐一个 ASP.NET MVC群 171560784
Entity Framework Code First 常用方法集成的更多相关文章
- Entity Framework Code First学习系列目录
Entity Framework Code First学习系列说明:开发环境为Visual Studio 2010 + Entity Framework 5.0+MS SQL Server 2012, ...
- Entity Framework Code First数据库连接
1. 安装Entity Framework 使用NuGet安装Entity Framework程序包:工具->库程序包管理器->程序包管理器控制台,执行以下语句: PM> Insta ...
- Entity Framework Code First属性映射约定
Entity Framework Code First与数据表之间的映射方式有两种实现:Data Annotation和Fluent API.本文中采用创建Product类为例来说明tity Fram ...
- Entity Framework Code First关系映射约定
本篇随笔目录: 1.外键列名默认约定 2.一对多关系 3.一对一关系 4.多对多关系 5.一对多自反关系 6.多对多自反关系 在关系数据库中,不同表之间往往不是全部都单独存在,而是相互存在关联的.两个 ...
- Entity Framework Code First执行SQL语句、视图及存储过程
1.Entity Framework Code First查询视图 Entity Framework Code First目前还没有特别针对View操作的方法,但对于可更新的视图,可以采用与Table ...
- Entity Framework Code First使用DbContext查询
DbContext.DbSet及DbQuery是Entity Framework Code First引入的3个新的类,其中DbContext用于保持数据库会话连接,实体变化跟踪及保存,DbSet用于 ...
- Entity Framework Code First添加修改及删除单独实体
对于一个单独实体的通常操作有3种:添加新的实体.修改实体以及删除实体. 1.添加新的实体 Entity Framework Code First添加新的实体通过调用DbSet.Add()方法来实现. ...
- Entity Framework Code First实体对象变动跟踪
Entity Framework Code First通过DbContext.ChangeTracker对实体对象的变动进行跟踪,实现跟踪的方式有两种:变动跟踪快照和变动跟踪代理. 变动跟踪快照:前面 ...
- 旧项目如何切换到Entity Framework Code First
Entity Framework Code First固然是好东西,然而如果是已经存在的旧有项目,如何简单方便的使用切换呢? 这里介绍一个VS的插件Entity Framework Power Too ...
随机推荐
- Transact-SQL三值逻辑
/*===========================<一>========================== 在SQL中逻辑表达式的值有三种: 1.TRUE 2.FALSE 3.U ...
- JQuery实现回车代替Tab键(按回车跳到下一栏)
一个提交按钮以后,用户如果按了键盘的回车键,默认情况下,就会提交这个表单了.这样对于用户输入各个表单项目,用户体验很不好,输入完一个项目,或者用鼠标选择下一个项目,或者用键盘的Tab键选中下一个项目. ...
- D. Ilya and Escalator
D. Ilya and Escalator time limit per test 2 seconds memory limit per test 256 megabytes input standa ...
- [WinForm] TableLayoutPanel和FlowLayoutPanel的使用
这篇文章主要跟大家分享下,在配餐系统的开发中,对tableLayoutPanel 和 flowLayoutPanel 控件的使用方法和技巧 ——后附上 测试demo, 相信需要的朋友下载看后能很快的知 ...
- 【开源项目7】Android视图注入库:butterknife
介绍 ButterKnife通过@InjectView和视图的ID注解的变量去找到并自动转换为你布局上相应的布局视图. class ExampleActivity extends Activity { ...
- oracle数据库例外处理与视图
pl/sql例外处理 例 当输入编号没有时的例外处理 declare --定义 v_ename emp.ename%type; begin -- select ename into v_ename f ...
- PreparedStatement和Statement的区别
转自:http://blog.sina.com.cn/s/blog_77eba18f01019csh.html 1. PreparedStatement接口继承Statement, PreparedS ...
- Oracle 基础 —SQL语句优化的途径
一:SQL语句的优化途径 1.选择合适的Oracle优化器 (1).RBO 基于规则进行优化的优化器 --Oracle 10G 后被抛掉 (2).CBO基于成本(CPU 和 内存的占用率)优化的优 ...
- Nginx 反向代理,流量转发到固定内网 IP 方法
主配置文件: user nginx; worker_processes ; error_log /var/log/nginx/error.log warn; pid /var/run/nginx.pi ...
- C# struct
很困惑,为什么C#会有struct 这样一个关键字.虽然我用C#几年了,但绝少用到此关键字.我在相关书籍上学习C#的时候,看到过struct内容——但C#并不是我的第一入门语言,所以没有那么细致的学习 ...