首页 > 代码库 > 分享基于.NET MVC+EF CodeFirst+IOC+EasyUI的框架设计

分享基于.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的框架设计