MVC+EF OA观看视频记录
搭建基本框架

创建基接口:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks; namespace CZBK.HeiMaOA.IDAL
{
public interface IBaseDal<T> where T : class,new()
{
IQueryable<T> LoadEntities(System.Linq.Expressions.Expression<Func<T, bool>> whereLambda);
IQueryable<T> LoadPageEntities<s>(int pageIndex, int pageSize, out int totalCount, System.Linq.Expressions.Expression<Func<T, bool>> whereLambda, System.Linq.Expressions.Expression<Func<T, s>> orderbyLambda, bool isAsc);
bool DeleteEntity(T entity);
bool UpdateEntity(T entity);
T AddEntity(T entity);
}
}
其他接口层继承基接口:
using CZBK.HeiMaOA.Model;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks; namespace CZBK.HeiMaOA.IDAL
{
/// <summary>
/// 由于每一个接口中,都需要定义CURD,那么造成重复了。所以我们这里可以封装一下。
/// </summary>
public partial interface IUserInfoDal : IBaseDal<UserInfo>
{
//定义自己特有的数据操作的方法。
} }
创建dal层相应类,引用idal model 继承实现iuserinfodal(鼠标放在你iuserinfodal上右键会自动创建实现代码)
拿到EF上下文(demx下的cs文件中)
dal中快速引用EF方法: 在dal新建一个空的数据模型,然后干掉,该引的就都引了

创建basedal(把刚才实现userinfo的代码转移到basedal)
using CZBK.HeiMaOA.Model;
using System;
using System.Collections.Generic;
using System.Data.Entity;
using System.Linq;
using System.Text;
using System.Threading.Tasks; namespace CZBK.HeiMaOA.DAL
{
public class BaseDal<T>where T:class,new()
{
// OAEntities Db = new OAEntities();
DbContext Db = DBContextFactory.CreateDbContext();//完成EF上下文创建.
/// <summary>
/// 基本查询方法
/// </summary>
/// <param name="whereLambda"></param>
/// <returns></returns>
public IQueryable<T> LoadEntities(System.Linq.Expressions.Expression<Func<T, bool>> whereLambda)
{
return Db.Set<T>().Where<T>(whereLambda);
}
/// <summary>
/// 分页方法
/// </summary>
/// <typeparam name="s">排序的约束</typeparam>
/// <param name="pageIndex">当前页码</param>
/// <param name="pageSize">每页显示记录数</param>
/// <param name="totalCount">总条数</param>
/// <param name="whereLambda">过滤条件</param>
/// <param name="orderbyLambda">排序条件</param>
/// <param name="isAsc">排序方式</param>
/// <returns></returns>
public IQueryable<T> LoadPageEntities<s>(int pageIndex, int pageSize, out int totalCount, System.Linq.Expressions.Expression<Func<T, bool>> whereLambda, System.Linq.Expressions.Expression<Func<T, s>> orderbyLambda, bool isAsc)
{
var temp = Db.Set<T>().Where<T>(whereLambda);
totalCount = temp.Count();
if (isAsc)//如果成立表示升序
{
temp = temp.OrderBy<T, s>(orderbyLambda).Skip<T>((pageIndex - ) * pageSize).Take<T>(pageSize);
}
else
{
temp = temp.OrderByDescending<T, s>(orderbyLambda).Skip<T>((pageIndex - ) * pageSize).Take<T>(pageSize);
}
return temp; }
/// <summary>
/// 删除数据
/// </summary>
/// <param name="entity"></param>
/// <returns></returns>
public bool DeleteEntity(T entity)
{
Db.Entry<T>(entity).State = System.Data.EntityState.Deleted;
// return Db.SaveChanges() > 0;
return true;
}
/// <summary>
/// 更新
/// </summary>
/// <param name="entity"></param>
/// <returns></returns>
public bool UpdateEntity(T entity)
{
Db.Entry<T>(entity).State = System.Data.EntityState.Modified;
// return Db.SaveChanges() > 0;
return true;
}
/// <summary>
/// 添加数据
/// </summary>
/// <param name="entity"></param>
/// <returns></returns>
public T AddEntity(T entity)
{
Db.Set <T>().Add(entity);
//Db.SaveChanges();
return entity;
}
}
}
userinfodal 几层basedal 、Iuserinfodal 此处不用实现,basedal已经实现
using CZBK.HeiMaOA.IDAL;
using CZBK.HeiMaOA.Model;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks; namespace CZBK.HeiMaOA.DAL
{
public partial class UserInfoDal:BaseDal<UserInfo>,IUserInfoDal
{ } }
在工厂层 添加DBSession 数据会话层,其实就是一个工厂类
添加引用 dal idal model
using CZBK.HeiMaOA.DAL;
using CZBK.HeiMaOA.IDAL;
using CZBK.HeiMaOA.Model;
using System;
using System.Collections.Generic;
using System.Data.Entity;
using System.Linq;
using System.Text;
using System.Threading.Tasks; namespace CZBK.HeiMaOA.DALFactory
{
/// <summary>
/// DBSession:数据会话层,赋责数据操作类实例的创建。然后业务层调用数据会话层,获取相应的数据操作类实例。所以说,DBSession(数据会话层)其实就是一个工厂类,完成了业务层与数据层的解耦.
/// </summary>
public partial class DBSession:IDBSession
{
//DbContext Db = new OAEntities();
public DbContext Db {
get { return DBContextFactory.CreateDbContext(); }//完成EF上下文创建
}
//private IUserInfoDal _UserInfoDal;
//public IUserInfoDal UserInfoDal
//{
// get {
// if (_UserInfoDal == null)
// {
// //_UserInfoDal = new UserInfoDal();//这里不能直接new,因为DBSession与数据层耦合.
// _UserInfoDal = DALAbstractFactory.CreateUserInfoDal();//通过抽象工厂将数据会话层与数据层解耦.
// }
// return _UserInfoDal;
// }
// set
// {
// _UserInfoDal = value;
// }
//} /// <summary>
/// 保存数据。一个业务中有可能涉及到对多张表的操作,那么我们希望是将要操作的数据先追加到EF上下文件中,然后再统一的保存到数据库中。这样,就完成了链接一次数据库,完成了多次操作。提高数据操作的性能。
/// </summary>
/// <returns></returns>
public bool SaveChanges()
{
return Db.SaveChanges() > ;
}
/// <summary>
/// 执行SQL语句。insert ,delete update
/// </summary>
/// <param name="sql"></param>
/// <param name="pars"></param>
/// <returns></returns>
public int ExecuteSql(string sql, params System.Data.SqlClient.SqlParameter[] pars)
{
return Db.Database.ExecuteSqlCommand(sql, pars);
}
public List<T> ExecuteQuery<T>(string sql, params System.Data.SqlClient.SqlParameter[] pars)
{
return Db.Database.SqlQuery<T>(sql, pars).ToList();
}
}
}
dalfactory层创建抽象工厂
using System.Configuration;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Threading.Tasks; namespace CZBK.HeiMaOA.DALFactory
{
/// <summary>
/// 抽象工厂:都是解决对象的创建问题。(抽象工厂是通过反射的方式创建类的实例.)
/// </summary>
public partial class DALAbstractFactory
{
//private static readonly string DalNameSpace = ConfigurationManager.AppSettings["DalNameSpace"];//获取命名空间.
// private static readonly string DalAssembly = ConfigurationManager.AppSettings["DalAssembly"];
//public static IUserInfoDal CreateUserInfoDal()
//{
// string fullClassName = DalNameSpace + ".UserInfoDal";//构建类的全名称.
// return CreateInstance(fullClassName,DalAssembly) as IUserInfoDal;
//} private static object CreateInstance(string fullClassName,string assemblyPath)
{
var assembly=Assembly.Load(assemblyPath);//加载程序集.
return assembly.CreateInstance(fullClassName);
}
}
}
MVC+EF OA观看视频记录的更多相关文章
- ASP.NET MVC+EF框架+EasyUI实现权限管理系列
http://www.cnblogs.com/hanyinglong/archive/2013/03/22/2976478.html ASP.NET MVC+EF框架+EasyUI实现权限管理系列之开 ...
- ASP.NET MVC+EF框架+EasyUI实现权限管理系列之开篇
原文:ASP.NET MVC+EF框架+EasyUI实现权限管理系列之开篇 前言:博客又有一段时间没有更新了,心里感觉这段时间空空的,好像什么都没有学下,所以就想写博客,所以就有了这个系列,这里当然也 ...
- 使用MiniProfiler跟踪MVC + EF + Bootstrap 2 权限管理系统的性能消耗
安装MiniProfiler 在MVC + EF + Bootstrap 2 权限管理系统入门级(附源码)文章中下载了它的源码,调试模式下打开一个页面都要再2.5秒以上,所以使用MiniProfile ...
- MVC+EF 理解和实现仓储模式和工作单元模式
MVC+EF 理解和实现仓储模式和工作单元模式 原文:Understanding Repository and Unit of Work Pattern and Implementing Generi ...
- ASP.NET MVC + EF 利用存储过程读取大数据,1亿数据测试很OK
看到本文的标题,相信你会忍不住进来看看! 没错,本文要讲的就是这个重量级的东西,这个不仅仅支持单表查询,更能支持连接查询, 加入一个表10W数据,另一个表也是10万数据,当你用linq建立一个连接查询 ...
- 多层架构+MVC+EF+AUTOFAC+AUTOMAPPER
最近使用ligerui搭建了一个简单的教务管理demo,将重要的地方记录,也希望能帮到有这方面需要园友. 一.目录 1.多层架构+MVC+EF+AUTOFAC+AUTOMAPPER: 2.MVC中验证 ...
- ASP.NET MVC+EF框架+EasyUI实现权限管理系列(16)-类库架构扩展以及DLL文件生成修改和用户的简单添加
原文:ASP.NET MVC+EF框架+EasyUI实现权限管理系列(16)-类库架构扩展以及DLL文件生成修改和用户的简单添加 ASP.NET MVC+EF框架+EasyUI实现权限管系列 (开篇) ...
- ASP.NET MVC+EF框架+EasyUI实现权限管理系列(14)-主框架搭建
原文:ASP.NET MVC+EF框架+EasyUI实现权限管理系列(14)-主框架搭建 ASP.NET MVC+EF框架+EasyUI实现权限管系列 (开篇) (1):框架搭建 (2 ...
- ASP.NET MVC + EF 利用存储过程读取大数据
ASP.NET MVC + EF 利用存储过程读取大数据,1亿数据测试很OK 看到本文的标题,相信你会忍不住进来看看! 没错,本文要讲的就是这个重量级的东西,这个不仅仅支持单表查询,更能支持连接查询, ...
随机推荐
- Codeforces Round #353 (Div. 2)Restoring Painting
Vasya works as a watchman in the gallery. Unfortunately, one of the most expensive paintings was sto ...
- topcoder SRM 624 DIV2 BuildingHeightsEasy
从大到小遍历一遍,每次取M个元素,然后求得最小的floor即可 int minimum(int M, vector <int> heights) { sort(heights.begin( ...
- Codeforces Round #251 (Div. 2) A - Devu, the Singer and Churu, the Joker
水题 #include <iostream> #include <vector> #include <algorithm> using namespace std; ...
- BZOJ 1191 超级英雄 Hero 题解
BZOJ 1191 超级英雄 Hero 题解 Description 现在电视台有一种节目叫做超级英雄,大概的流程就是每位选手到台上回答主持人的几个问题,然后根据回答问题的多少获得不同数目的奖品或奖金 ...
- HDU 4454 Stealing a Cake(枚举角度)
题目链接 去年杭州现场赛的神题..枚举角度..精度也不用注意.. #include <iostream> #include <cstdio> #include <cstr ...
- 【Eclipse】 Alt+/ 代码提示问题解决方案
一般情况下alt+/有代码提示作用,还有代码提示的快捷代码也不是alt+/,因此要恢复代码提示用alt+/.需要做两件事. 在 Window - Preferences - General - Key ...
- SDL1.2学习
http://wenku.baidu.com/view/c953c0878762caaedd33d4d8.html 一.安装: sudo apt-get install libsdl1.2-dev l ...
- 配置1000条ACE的脚本
配置1000条ACE的脚本 测试 python 引言 在路由器或者交换机产品中,手工配置大量shell命令时,难免繁琐且效率低下,鉴于CRT中支持多种脚本语言,因此可通过脚本执行大量重复的shell配 ...
- mysql5.7.11修改root默认密码
知道 MySQL 出了5.7了,并且网上说性能提高了一两倍,于是在虚拟机上安装了个 CentOS 7,在上面安装 MySQL 5.7 我使用的是 yum安装方式,要求虚拟机能够上网,因为它会在线下载安 ...
- JAVA生成带Logo的二维码
1.下载生成二维码所需要的jar包qrcode.jar: 2.直接上生成二维码的java代码 //需要导入的包 import java.awt.Color;import java.awt.Graphi ...