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. 关于在Android设置全局变量随时获取context

    最实在的办法就是继承Application,在里面设置全局变量,因为Application是android的应用入口,并且运行周期贯穿整个程序运行. import android.app.Applic ...

  2. LeetCode4 Median of Two Sorted Arrays

    题目: There are two sorted arrays nums1 and nums2 of size m and n respectively. Find the median of the ...

  3. 2dx关于js响应layer触摸消息的bug

    cocos2dx关于js响应layer触摸消息的bug cocos2d-x 3.7 问题描述: 目前这个版本中(3.7),c++层的layer触摸消息只能通过消息的方式发送给js,不能像lua一样直接 ...

  4. [Windows] VS2010代码模板添加版权信息

    通过以下方式可以自定义CS类文件代码模板(以下为VS2010,VS2008类似): 1,打开VS的安装目录,例如 D:\Program Files\Microsoft Visual Studio 10 ...

  5. Handsontable 学习笔记-Methods

    Handson: 亲自实践 先给出数据源和基本配置: var data =[ ["A1","B1","C1","D1"] ...

  6. 【谷歌市场安装】Google Play 闪退问题解决

    Google Play 安装后闪退,是因为手机没有内置GMS(Google Mobile Service) 框架. 由于谷歌退出了中国市场,国产手机很多都没有内置GMS, 导致Google Play ...

  7. [python] HDU自动登录提交代码程序

    调了一个下午,被python的正则绊住了:在C#上运作好好的式子在python老是报错,原来python的断言式必须是固定长度的,像类似(?<=[^>].*?)的零宽度正回顾后发断言是不允 ...

  8. 基调(听云)app,服务器,质量测试手段

    1. 网络质量检测 http://www.tingyun.com/tingyun_network.html

  9. .Net (MVC) 随机生成验证码

    以前一直对C#的GDI画图部分知识点不怎么用所以忘得差不多了,这两天正好公司要做一个博客系统,其中一个需求就是留言时为了防止恶意攻击必须填写验证码,正好借着这个机会复习了一下,以下是实现代码,写的比较 ...

  10. php学习笔记2--安装apache遇到的问题

    下载apache之后,以管理员身份运行cmd:1.httpd -k install2.httpd -k start出现无法运行的问题,可能的原因是443端口已被占用.在我的机器中是因为安装了VMwar ...