分享基于.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 ...
随机推荐
- 数据分析R语言1
数据分析R语言 无意中发现网上的一个数据分析R应用教程,看了几集感觉还不错,本文做一个学习笔记(知识点来源:视频内容+R实战+自己的理解),视频详细的信息请参考http://www.itao521.c ...
- javascript设计模式系列
javascript设计模式系列 创建型: 1.抽象工厂模式(Abstract Factory) 2.构建者模式(Builder) 3.工厂方法模式(Factory Method) 4.原型模式( ...
- 2014.3.5-C语言学习小结
知识点: 1.结构体 struct 2.联合体 union 3.枚举 4.结构.联合与函数 =========================== 结构体 思考:如果现在希望保存一个学生的信息,该如何 ...
- MVC视图中的@Html.xxx(...)
ASP.NET MVC视图中的@Html.xxx(...) 问题 在视图页中@Html.xxx(...)是什么?如何被执行? 如下图所示: 解疑 视图页中@Html.xxx(...)涉及的内容有: ...
- 排序算法学习,python实现
原创博文,转载请注明出处 利用周六周末的时间把几种基本的排序方法用python实现了一下,废话少说,直接上代码. 本文不注重基础知识的讲解,只做大致的描述,大家如果不清楚概念,自行查找资料. 直接插入 ...
- Linux网络编程(三)
Linux网络编程(三) wait()还是waitpid() Linux网络编程(二)存在客户端断开连接后,服务器端存在大量僵尸进程.这是由于服务器子进程终止后,发送SIGCHLD信号给父进程,而父进 ...
- python study
python django restul webservice返回json数据 2013-09-27 23:14 by lixingle, 249 visits, 网摘, 收藏, 编辑 摘要:做这个d ...
- wpf中数据绑定(Datacontext)的应用
在winform开发中,我们常用到ado.net进行数据绑定,在编程技术日新月异的今天,这种繁杂的数据绑定方式已不能再适合开发人员,于是微软推出了wpf,更炫的界面美化,更简洁地编写控件,在wpf中使 ...
- MongoDB学习(翻译7)
接上篇 忽略某字段或属性 手动构造类映射时您可以简单地通过不将字段或属性添加到类映射.当使用自动映射你需要指定应忽略该字段或属性的方法.可以使用属性编写如下编写: public class MyCla ...
- jQuery Colorbox是一款弹出层
jQuery Colorbox使用教程 jQuery Colorbox是一款弹出层,内容播放插件,效果极佳,最关键的是大小只有10KB,当然我主要是用来弹出图片啦,(之前介绍过jquery Fancy ...