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 ...
随机推荐
- 检测MYSQL不同步发邮件通知的脚本
脚本代码如下:#!/bin/bash ...
- 用 Gearman 分发 PHP 应用程序的工作负载
尽管一个 Web 应用程序的大部分内容都与表示有关,但它的价值与竞争优势却可能体现在若干专有服务或算法方面.如果这类处理过于复杂或拖沓,最好是进行异步执行,以免 Web 服务器对传入的请求没有响应.实 ...
- VS 之 InstallShield Limited Edition for Visual Studio 2015 图文教程
从Visual Studio 2012开始,微软就把自家原来的安装与部署工具彻底废掉了,转而让大家去安装使用第三方的打包工具“InstallShield Limited Edition for Vis ...
- [Android]AndroidDesign中ActionBar探究1
概述 从Google IO 2013大会以来越来越多的Android应用开始遵循Android的设计风格,简单的就是google play和Gmail,在国内我们常用的软件像知乎.印象笔记,主要的界面 ...
- uboot在s3c2440上的移植(2)
一.移植环境 主 机:VMWare--Fedora 9 开发板:Mini2440--64MB Nand,Kernel:2.6.30.4 编译器:arm-linux-gcc-4.3.2.tgz u-b ...
- Part 14 ng hide and ng show in AngularJS
ng-hide and ng-show directives are used to control the visibility of the HTML elements. Let us under ...
- Part 30 to 31 Talking about Interfaces in c#
Part 30 Interfaces in c# We create interfaces using interface keyword. just like classes interfaces ...
- JavaScript之返回顶部
为了弄这个Hexo,今天又是坐在电脑面前待了一天( ⊙ o ⊙ ),老是出问题,在百度上也试验了很多方法,还是没弄好,诶...身心疲惫甚是乏累啊~~~ 算了,这个Hexo先不弄,还是安分点吧,在Hex ...
- 关于Windows® API Code Pack for Microsoft® .NET Framework
相比之前的操作系统,Window 7(or Vista)提供了很多新特性,我们在应用实现中可以利用这些特性来提升用户体验. 这些特性主要包括以下几个方面: Shell Enhancements Dir ...
- [转]Mac OS X 下部分Android手机无法连接adb问题之解决方案
时至当今,Android山寨手机厂商已如此之多,能修改和个性化定制Android OS的能人已是多如牛毛,有的牛人修改Android系统只会影响所修改的点,不会影响其它,然后还有的就不多说了,总之做的 ...