分享基于.NET MVC+EF CodeFirst+IOC+EasyUI的框架设计

**注:要做工,没什么时间,等有空时会上传到GIT,项目结构如上,简单的说一下:
**支持IOC及多数据库等,各项目由MVC区域隔离;
主要使用基于接口与抽象类进行高度的抽象与接口隔离,与其它框架比较优点如下:
1,抽象度非常高,接口隔离,项目清晰完整,任何一部分均可且容易替换;一开始就非常注重非陷入复杂化;
2,框架非常易用,且易于扩展;编程新手也可立即上手使用;
3,设计目标为:轻量化、高抽象度、可扩展性、模块任意替换、清晰简洁易用(易懂、代码量要少[没必要码农]);
**NetDevelop框架使用说明:
1,设计图为Doc文件夹下;
2,使用说明(支持多数据库,这里以MES为例):
2.1 在Mes.Container项目下:
Entitys文件夹下:新建实体类(用动软等和模块生成)
EntitysMapping文件夹下:新建映射类
MesDbContext.cs文件中:添加DbSet
2.2 在Mes.IRepository项目下:
新建仓储接口
2.3 在Mes.Repository项目下:
新建仓储接口实现类
2.4 在NetDevelop.DbFactory项目下:
Interfaces/IDbSessionMes:添加接口
MesDbSession:添加接口实现
2.5 在Mes.IService项目下:
新建接口;
2.6 在Mes.Service项目下:
新建接口实现类;
2.7 在MvcApplication项目下(或其它类型应用程序中):
如已建立以下创建工厂,则直用添加注册;
MvcApplication/Common/NinjectControllerFactory中:建立注册映射
**以上已进行了高度的抽象与接口隔离,实测并性能有所提升,已经非常的简化了操作,线程级隔离;
平均上述的每个新加类文件,除了实体类,其代码量平均都在5行以下。后续还可以用生成器全部生成;
2.8 如何使用(只用声明属性,并在构造函数中加载要手工释放回收的对象资源):
NetDevelop_20161209.rar
1,实现:Mvc+EasyUI+Ninject,生成实体类可用动软代码生成器,只生成简单实体即可。
2,用这个时,多条件查询用
IQueryable<User> q = _userService.Find(t => t.Id != 0);
q = q.Where(t=>t....)
q = q.Where(t=>t....)
单条件用 List<User> list=_userService.Find(t => t.Id != 0).ToList();
3,用了IOC后,要简单很多;
原:IUserService bll=new UserService();
User model=bll.Find(t=>t.Id!=0).First();
现:
每个页面CS只用一个IUserService _userService{get;set;}
调用:User model=_userService.Find(t=>t.Id!=0).First();
基本上少写很多的IUserService bll=new UserService();
4,User的用户帐号表,记得给K3留个字段,防止后面连不上。
示例:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Linq.Expressions;
using NetDevelop.Data;
using NetDevelop.Utility;
using Framework.Container.Entitys;//多数据库支持
using Framework.Container.View;
using Framework.IService;
//using Framework.Service;
using Mes.Container.Entitys;//多数据库支持
using Mes.Container.View;
using Mes.IService;
//using Mes.Service;
using Newtonsoft.Json;
using MvcApplication.Common;
using Ninject;
namespace MvcApplication.Areas.Admin.Controllers
{
[AuthorizationAuthentication]
public class UserController : BaseController
{
#region Attribute
[Inject]
public IUserService _userService { get; set; }
public UserController()
{
this.AddDisposableObject(_userService);
}
#endregion
//
// GET: /Admin/User/
/// <summary>
/// 用户表主页
/// </summary>
/// <returns></returns>
public ActionResult Index()
{
ViewBag.theme = "default";
return View();
}
/// <summary>
/// 获取所有的用户档案
/// </summary>
/// <returns></returns>
public ActionResult GetUserListAll()
{
//查询示例:
IQueryable<User> q = _userService.Find(t => t.Id != 0);//惰性加载
或
List<User> list=_userService.Find(t => t.Id != 0).ToList();//立即加载
...其它处理
return Content(Json...);//返回处理后的视图;
}
}
}
注:在类特性[AuthorizationAuthentication]中,使用了反射,这里也可另用动态编译取代(只支持.net4.0以上);
NetDevelop20161217.rar
1,已将服务类的基础的公共方法单独提取出来,简化程序;
2,生产制令单(显示,增改);多条件查询与删除等未处理;
分享基于.NET MVC+EF CodeFirst+IOC+EasyUI的框架设计的更多相关文章
- 新年奉献MVC+EF(CodeFirst)+Easyui医药MIS系统
本人闲来无事就把以前用Asp.net做过的一个医药管理信息系统用mvc,ef ,easyui重新做了一下,业务逻辑简化了许多,旨在加深对mvc,ef(codefirst),easyui,AutoMap ...
- 新年奉献MVC+EF(CODEFIRST)+EASYUI医药MIS系统(转)
出处:http://www.cnblogs.com/chenlinzhi/p/4332628.html 本人闲来无事就把以前用Asp.net做过的一个医药管理信息系统用mvc,ef ,easyui重新 ...
- 基于.NET MVC的高性能IOC插件化架构
基于.NET MVC的高性能IOC插件化架构 最近闲下来,整理了下最近写的代码,先写写架构,后面再分享几个我自己写的插件 最近经过反复对比,IOC框架选择了Autofac,原因很简单,性能出众,这篇博 ...
- 分享基于EF6、Unitwork、Autofac的Repository模式设计
目录 分享基于EF6.Unitwork.Autofac的Repository模式设计 一.实现的思路和结构图 二.Repository设计具体的实现代码 三.Repository设计的具体的使用 四. ...
- 【Qt编程】基于Qt的词典开发系列<一>--词典框架设计及成品展示
去年暑假的时候,作为学习Qt的实战,我写了一个名为<我爱查词典>的词典软件.后来由于导师项目及上课等原因,时间不足,所以该软件的部分功能欠缺,性能有待改善.这学期重新拿出来看时,又有很多东 ...
- MVC+EF(CODEFIRST)+EASYUI医药MIS系统
https://www.cnblogs.com/chenlinzhi/p/4332628.html
- 基于.NET MVC的高性能IOC插件化架构(一)
最近闲下来,整理了下最近写的代码,先写写架构,后面再分享几个我自己写的插件 最近经过反复对比,IOC框架选择了Autofac,原因很简单,性能出众,这篇博文是我的各大IOC框架的性能测试:http:/ ...
- Asp.Net MVC +EF CodeFirst+多层程序设计
1.概述 这是一个基于个人博客的一个项目,虽然博客根本没必要做这么复杂的设计.但是公司有需求,所以先自己弄个项目练练手.项目需要满足下列需求 1.层与层之间需要解耦,在后期上线更新维护时不需要覆盖,只 ...
- 基于.NET MVC的高性能IOC插件化架构(二)之插件加载原理
上一篇博文简单介绍了下插件化的代码组成部分:http://www.cnblogs.com/gengzhe/p/4390932.html,源码地址:https://github.com/luohuazh ...
随机推荐
- Date与SimpleDateFormat
Date常用的方法 返回类型 方法名称 备注 Date New Date() 创建当前日期对象 Date New date(long dt) 使用自1970.1.1以后的指定毫秒数创建日期 boole ...
- c#中关于String、string,Object、object,Int32、int
在java中,string和String有着明显的区别,后者就是前者的一个封装.在c#中,好像是通用的,大部分情况下,两者互换并不会产生问题.今天特意查了一下资料,了解了一下两者的关系. 简单的讲,S ...
- 【IOS开发】如何画1像素的线
最近在项目中画了一根1像素的线,我是通过直接花一个但是通过PS查看,画了不止1个像素. 原代码语句: label1 = [[UILabel alloc] initWithFrame:CGRectMak ...
- Apache HttpServer Installing the apache2.2 service <OS 5>拒绝访问. :Failed to open the WinNT service manager
Installing the apache2.2 service<OS 5>拒绝访问. :Failed to open the WinNT service manager 只需要于管理员 ...
- C#类的初始化
类的构造函数 类的构造函数,有实例构造函数和静态构造函数.如果我们没有构造函数,系统会为我们生成一个默认构造函数,如果我们已经定义了构造函数,系统就不会再为我们生成构造函数. class Simp ...
- 用django搭建一个简易blog系统(翻译)(三)
06. Connecting the Django admin to the blog app Django 本身就带有一个应用叫作Admin,而且它是一个很好的工具 在这一部分,我们将要激活admi ...
- 用django搭建一个简易blog系统(翻译)(一)
Django 入门 原始网址: http://www.creativebloq.com/netmag/get-started-django-7132932 代码:https://github.com/ ...
- 如何安装ArchLinux
如何安装ArchLinux 本文基于ArchLinux(https://www.archlinux.org/)Current Release: 2013.08.01的ISO写的安装教程! ISO下 ...
- Extjs的学习及MIS系统实践应用
Extjs的学习及MIS系统实践应用(系列文章) 本系列文章从Extjs的实际运用出发,结合系统开发的实践经验,详细解释Extjs的基本控件及控件扩展的用法,和在平时的学习运用中一步一步查阅的资料.积 ...
- Debian下的'aptitude update'失败处理
Hit http://ftp.us.debian.org squeeze/contrib amd64 Packages Hit http://download.proxmox.com squeeze/ ...