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 常用方法集成的更多相关文章

  1. Entity Framework Code First学习系列目录

    Entity Framework Code First学习系列说明:开发环境为Visual Studio 2010 + Entity Framework 5.0+MS SQL Server 2012, ...

  2. Entity Framework Code First数据库连接

    1. 安装Entity Framework 使用NuGet安装Entity Framework程序包:工具->库程序包管理器->程序包管理器控制台,执行以下语句: PM> Insta ...

  3. Entity Framework Code First属性映射约定

    Entity Framework Code First与数据表之间的映射方式有两种实现:Data Annotation和Fluent API.本文中采用创建Product类为例来说明tity Fram ...

  4. Entity Framework Code First关系映射约定

    本篇随笔目录: 1.外键列名默认约定 2.一对多关系 3.一对一关系 4.多对多关系 5.一对多自反关系 6.多对多自反关系 在关系数据库中,不同表之间往往不是全部都单独存在,而是相互存在关联的.两个 ...

  5. Entity Framework Code First执行SQL语句、视图及存储过程

    1.Entity Framework Code First查询视图 Entity Framework Code First目前还没有特别针对View操作的方法,但对于可更新的视图,可以采用与Table ...

  6. Entity Framework Code First使用DbContext查询

    DbContext.DbSet及DbQuery是Entity Framework Code First引入的3个新的类,其中DbContext用于保持数据库会话连接,实体变化跟踪及保存,DbSet用于 ...

  7. Entity Framework Code First添加修改及删除单独实体

    对于一个单独实体的通常操作有3种:添加新的实体.修改实体以及删除实体. 1.添加新的实体 Entity Framework Code First添加新的实体通过调用DbSet.Add()方法来实现. ...

  8. Entity Framework Code First实体对象变动跟踪

    Entity Framework Code First通过DbContext.ChangeTracker对实体对象的变动进行跟踪,实现跟踪的方式有两种:变动跟踪快照和变动跟踪代理. 变动跟踪快照:前面 ...

  9. 旧项目如何切换到Entity Framework Code First

    Entity Framework Code First固然是好东西,然而如果是已经存在的旧有项目,如何简单方便的使用切换呢? 这里介绍一个VS的插件Entity Framework Power Too ...

随机推荐

  1. IIS 之 HTTP 错误 403.14 - Forbidden

    错误如下图所示: 其实,这个提示下面已经交代了怎么解决问题,现在告诉大家具体的详细步骤. 方法一:配置" 默认文档 " 方法二:启用" 目录浏览 "

  2. D3D11 Query查询耗时

        确实的来说,这是个Debug/Profile的需求,在运行期这个时间毫无意义,有意义的是两帧之间走过了多少时间,而这个,可以用来查询某一个效果所用耗时,废话不多少,进入正题.     首先要创 ...

  3. java程序执行内存处理过程

    我们学习知识,不仅要知其然,还要知其所以然,你的工资必定和你学习的深度成正比. 在以往.net的学习过程中,我们了解了怎么去开发一个程序,并有了一定的开发经验,但是一个程序具体是怎么在内存中运行的呢? ...

  4. Plupload文件上传组件使用API

    Plupload有以下功能和特点: 1.拥有多种上传方式:HTML5.flash.silverlight以及传统的<input type=”file” />.Plupload会自动侦测当前 ...

  5. SQL Server中游标的使用

    举个栗子: -- 临时变量 DECLARE @Id UNIQUEIDENTIFIER -- 声明游标名 DECLARE cursor_name CURSOR FOR SELECT ID from CO ...

  6. vue-cli 发布(译)

    如果你现在正在使用Vue.js,当你构建一个原型的时候,你所需要做的通常就是通过<script>把Vue.js引入进来,然后就完事了.但是真实情况往往不是这样的.当我们真正开发一个应用的时 ...

  7. 24 MUST HAVE ESSENTIAL LINUX APPLICATIONS IN 2016

    Brief: Whare the must have applications for Linux? The answer is subjective and it depends on for wh ...

  8. asp.net中用正则表达式验证数据格式

      这是一个验证是否为数字的例子: Regex reg   = new Regex(@"^[0-9]+\.{0,1}[0-9]*$");reg.IsMatch(textBox1.T ...

  9. C#用反射判断一个类型是否是Nullable同时获取它的根类型(转自网络)

    在我们的应用程序中我们使用类描述我们的业务对象,为我们产生一些报表之类的,那就依赖大量不同的对象,我们创建一个帮助方法来转换我们的业务对象,或是一个List的业务对象到DataTables. 由于数据 ...

  10. Intent的4种传值方法总结

    xml 代码: <Button     android:id="@+id/button1"     android:layout_width="wrap_conte ...