• 发货源资源网

    [质量:5|效率:5|态度:5 ]

  • 当前位置:首页 > 源码集市 > 开发辅助 >
    收藏商品 分享到:
    举报
    开源:ASP.NET MVC+EF6+Bootstrap开发框架
    • 售  价:
    • 免费
    • 语  言:
    • C#
    • 数 据 库:
    • SQL2008R2
    • 品  牌:
    • WebForm
    • 最后更新:
    • 2016-08-24 09:08:20
    • 大  小:
    • 36.31MB MB
    • 演示网站:
    • 安装服务:
    • 免技术支持

      自动发货商品,随时可以购买,零等待。

      购买本商品,交易成功后可获赠积分。

      担保交易,有问题不解决24小时内可申请退款,安全保证。

    商品详情 交易评价 交易规则

    发货源资源网

     前言

        我在博客园潜水两三年了,在这里看过很多大神的文章,也学到了很多东西。可以说我是汲取着博客园的营养成长的。

        想当年,我也是拿10个G的精神粮食从一个博客园大神那里换来一套开发框架,正式走上开发之路,到后来成为主力开发,再到项目经理再后来顺利拿下美工妹,也算是走上人生巅峰。

        只索取,不分享就是自私,大家都这么自私还怎么做技术交流,说到分享首先想到的就是我那120G的精神粮食,但是分享这个好像有点法律风险,所以我把这几年在.net开发生涯中积累的一套框架分享给大家。

         早上发过一篇博客,一会儿就让管理员拿掉了,这里我解释下完全没有广告推广的意思,我不会放置任何推广信息,没那个必要,房子、车子、妹子都有了,在一家还不错的单位上着班,不然也没这个闲心来做什么开源框架,目的是有,就是出来在新手面前装个逼。这样吧大家下了代码去看,里面如果有一点点广告嫌疑作者我小JJ自动缩短一厘米。

        废话少说,先来介绍下这个开发框架。

     

        框架名称:NFine.Framwork,牛逼框架,好框架

        框架使用场景:OA、ERP、BPM、CRM、WMS、TMS、MIS等业务管理系统及后台系统

    框架解决方案:

     

    解决方案简介:

    1、NFine.Code 底层核心类(开发时不涉及,可编绎成dll提供)。

    2、NFine.Data 数据层(开发时不涉及,可编绎成dll提供)。

    3、NFine.Application  应用(有点类似业务逻辑层) 

    4、NFine.Domain 领域层。

    5、NFine.Mapping 数据库映射。

    6、NFine.Repository 数据访问。

    7、NFine.Web 前端视图及控制器。

    框架主要运用技术:

    • 1、前端技术

    • JS框架:jquery-2.1.1、Bootstrap.js、JQuery UI

    • CSS框架:Bootstrap v3.3.4(稳定是后台,UI方面根据需求自己升级改造吧)。

    • 客户端验证:jQuery Validation Plugin 1.9.0。

    • 在线编辑器:ckeditor、simditor

    • 上传文件:Uploadify v3.2.1

    • 动态页签:Jerichotab(自己改造)

    • 数据表格:jqGrid、Bootstrap Talbe

    • 对话框:layer-v2.3

    • 下拉选择框:jQuery Select2

    • 树结构控件:jQuery zTree、jQuery wdtree

    • 页面布局:jquery.layout.js 1.4.4

    • 图表插件:echarts、highcharts

    • 日期控件: My97DatePicker

    • 2、后端技术

    • 核心框架:ASP.NET MVC5、WEB API

    • 持久层框架:EntityFramework 6.0

    • 定时计划任务:Quartz.Net组件

    • 安全支持:过滤器、Sql注入、请求伪造

    • 服务端验证:实体模型验证、自己封装Validator

    • 缓存框架:微软自带Cache、Redis

    • 日志管理:Log4net、登录日志、操作日志

    • 工具类:NPOI、Newtonsoft.Json、验证码、丰富公共类似

    框架代码风格:

    数据库、仓库代码

    复制代码
     1 using NFine.Code; 2 using System; 3 using System.Collections.Generic; 4 using System.Data.Common; 5 using System.Linq; 6 using System.Linq.Expressions; 7  8 namespace NFine.Data 9 {10     /// <summary> 11     /// 仓储接口12     /// </summary> 13     /// <typeparam name="TEntity">实体类型</typeparam> 14     public interface IRepositoryBase<TEntity> where TEntity : class,new()15     {16         int Insert(TEntity entity);17         int Insert(List<TEntity> entitys);18         int Update(TEntity entity);19         int Delete(TEntity entity);20         int Delete(Expression<Func<TEntity, bool>> predicate);21         TEntity FindEntity(object keyValue);22         TEntity FindEntity(Expression<Func<TEntity, bool>> predicate);23         IQueryable<TEntity> IQueryable();24         IQueryable<TEntity> IQueryable(Expression<Func<TEntity, bool>> predicate);25         List<TEntity> FindList(string strSql);26         List<TEntity> FindList(string strSql, DbParameter[] dbParameter);27         List<TEntity> FindList(Pagination pagination);28         List<TEntity> FindList(Expression<Func<TEntity, bool>> predicate, Pagination pagination);29     }30 }
    复制代码
    复制代码
    using NFine.Code;using System;using System.Collections.Generic;using System.Data.Common;using System.Data.Entity;using System.Linq;using System.Linq.Expressions;using System.Reflection;using System.Text.RegularExpressions;namespace NFine.Data
    {
        /// <summary>     /// 仓储实现
        /// </summary>     /// <typeparam name="TEntity"></typeparam>     public class RepositoryBase<TEntity> : IRepositoryBase<TEntity> where TEntity : class,new()
        {
            public NFineDbContext dbcontext = new NFineDbContext();
            public int Insert(TEntity entity)
            {
                dbcontext.Entry<TEntity>(entity).State = EntityState.Added;
                return dbcontext.SaveChanges();
            }
            public int Insert(List<TEntity> entitys)
            {
                foreach (var entity in entitys)
                {
                    dbcontext.Entry<TEntity>(entity).State = EntityState.Added;
                }
                return dbcontext.SaveChanges();
            }
            public int Update(TEntity entity)
            {
                dbcontext.Set<TEntity>().Attach(entity);
                PropertyInfo[] props = entity.GetType().GetProperties();
                foreach (PropertyInfo prop in props)
                {
                    if (prop.GetValue(entity, null) != null)
                    {
                        if (prop.GetValue(entity, null).ToString() == "&nbsp;")
                            dbcontext.Entry(entity).Property(prop.Name).CurrentValue = null;
                        dbcontext.Entry(entity).Property(prop.Name).IsModified = true;
                    }
                }
                return dbcontext.SaveChanges();
            }
            public int Delete(TEntity entity)
            {
                dbcontext.Set<TEntity>().Attach(entity);
                dbcontext.Entry<TEntity>(entity).State = EntityState.Deleted;
                return dbcontext.SaveChanges();
            }
            public int Delete(Expression<Func<TEntity, bool>> predicate)
            {
                var entitys = dbcontext.Set<TEntity>().Where(predicate).ToList();
                entitys.ForEach(m => dbcontext.Entry<TEntity>(m).State = EntityState.Deleted);
                return dbcontext.SaveChanges();
            }
            public TEntity FindEntity(object keyValue)
            {
                return dbcontext.Set<TEntity>().Find(keyValue);
            }
            public TEntity FindEntity(Expression<Func<TEntity, bool>> predicate)
            {
                return dbcontext.Set<TEntity>().FirstOrDefault(predicate);
            }
            public IQueryable<TEntity> IQueryable()
            {
                return dbcontext.Set<TEntity>();
            }
            public IQueryable<TEntity> IQueryable(Expression<Func<TEntity, bool>> predicate)
            {
                return dbcontext.Set<TEntity>().Where(predicate);
            }
            public List<TEntity> FindList(string strSql)
            {
                return dbcontext.Database.SqlQuery<TEntity>(strSql).ToList<TEntity>();
            }
            public List<TEntity> FindList(string strSql, DbParameter[] dbParameter)
            {
                return dbcontext.Database.SqlQuery<TEntity>(strSql, dbParameter).ToList<TEntity>();
            }
            public List<TEntity> FindList(Pagination pagination)
            {
                bool isAsc = pagination.sord.ToLower() == "asc" ? true : false;
                string[] _order = pagination.sidx.Split('','');
                MethodCallExpression resultExp = null;
                var tempData = dbcontext.Set<TEntity>().AsQueryable();
                foreach (string item in _order)
                {
                    string _orderPart = item;
                    _orderPart = Regex.Replace(_orderPart, @"\s+", " ");
                    string[] _orderArry = _orderPart.Split('' '');
                    string _orderField = _orderArry[0];
                    bool sort = isAsc;
                    if (_orderArry.Length == 2)
                    {
                        isAsc = _orderArry[1].ToUpper() == "ASC" ? true : false;
                    }
                    var parameter = Expression.Parameter(typeof(TEntity), "t");
                    var property = typeof(TEntity).GetProperty(_orderField);
                    var propertyAccess = Expression.MakeMemberAccess(parameter, property);
                    var orderByExp = Expression.Lambda(propertyAccess, parameter);
                    resultExp = Expression.Call(typeof(Queryable), isAsc ? "OrderBy" : "OrderByDescending", new Type[] { typeof(TEntity), property.PropertyType }, tempData.Expression, Expression.Quote(orderByExp));
                }
                tempData = tempData.Provider.CreateQuery<TEntity>(resultExp);
                pagination.records = tempData.Count();
                tempData = tempData.Skip<TEntity>(pagination.rows * (pagination.page - 1)).Take<TEntity>(pagination.rows).AsQueryable();
                return tempData.ToList();
            }
            public List<TEntity> FindList(Expression<Func<TEntity, bool>> predicate, Pagination pagination)
            {
                bool isAsc = pagination.sord.ToLower() == "asc" ? true : false;
                string[] _order = pagination.sidx.Split('','');
                MethodCallExpression resultExp = null;
                var tempData = dbcontext.Set<TEntity>().Where(predicate);
                foreach (string item in _order)
                {
                    string _orderPart = item;
                    _orderPart = Regex.Replace(_orderPart, @"\s+", " ");
                    string[] _orderArry = _orderPart.Split('' '');
                    string _orderField = _orderArry[0];
                    bool sort = isAsc;
                    if (_orderArry.Length == 2)
                    {
                        isAsc = _orderArry[1].ToUpper() == "ASC" ? true : false;
                    }
                    var parameter = Expression.Parameter(typeof(TEntity), "t");
                    var property = typeof(TEntity).GetProperty(_orderField);
                    var propertyAccess = Expression.MakeMemberAccess(parameter, property);
                    var orderByExp = Expression.Lambda(propertyAccess, parameter);
                    resultExp = Expression.Call(typeof(Queryable), isAsc ? "OrderBy" : "OrderByDescending", new Type[] { typeof(TEntity), property.PropertyType }, tempData.Expression, Expression.Quote(orderByExp));
                }
                tempData = tempData.Provider.CreateQuery<TEntity>(resultExp);
                pagination.records = tempData.Count();
                tempData = tempData.Skip<TEntity>(pagination.rows * (pagination.page - 1)).Take<TEntity>(pagination.rows).AsQueryable();
                return tempData.ToList();
            }
        }
    }
    复制代码

    自动映射对象实体

     

     

     

    框架界面展示:

    支持多皮肤切换

     

     

    交易评价
      (0)
      <

      1/5

      >
    交易规则
    • 交易流程
    • 发货方式
    • 1、自动:在上方保障服务中标有自动发货的商品,拍下后,将会自动收到来自卖家的商品获取(下载)链接;

      2、手动:未标有自动发货的的商品,拍下后,卖家会收到邮件、短信提醒,也可通过QQ或订单中的电话联系对方。

    • 退款说明
    • 1、描述:源码描述(含标题)与实际源码不一致的(例:描述PHP实际为ASP、描述的功能实际缺少、版本不符等);

      2、演示:有演示站时,与实际源码小于95%一致的(但描述中有"不保证完全一样、有变化的可能性"类似显著声明的除外);

      3、发货:手动发货源码,在卖家未发货前,已申请退款的;

      4、服务:卖家不提供安装服务或需额外收费的(但描述中有显著声明的除外);

      5、其他:如质量方面的硬性常规问题等。

      注:经核实符合上述任一,均支持退款,但卖家予以积极解决问题则除外。交易中的商品,卖家无法对描述进行修改!

    • 注意事项
    • 1、在未拍下前,双方在QQ上所商定的内容,亦可成为纠纷评判依据(商定与描述冲突时,商定为准);

      2、在商品同时有网站演示与图片演示,且站演与图演不一致时,默认按图演作为纠纷评判依据(特别声明或有商定除外);

      3、在没有"无任何正当退款依据"的前提下,写有"一旦售出,概不支持退款"等类似的声明,视为无效声明;

      4、虽然交易产生纠纷的几率很小,但请尽量保留如聊天记录这样的重要信息,以防产生纠纷时便于16Aspx源码介入快速处理。

    • 16Aspx源码声明
    • 1、16Aspx源码作为第三方中介平台,依据交易合同(商品描述、交易前商定的内容)来保障交易的安全及买卖双方的权益;

      2、非平台线上交易的项目,出现任何后果均与16Aspx源码无关;无论卖家以何理由要求线下交易的,请联系管理举报。

  • 宝贝数量:7425
  • 创店时间:2017/5/26 16:11:00
  • 联系客服

    330199865

    店内搜索
  • 商品:
  • 价格: -
  • 本店销量榜

    1微信公众平台Bee.WeiXin开发源码

    2BS拖拽工作流设计及研发源码

    3通用权限管理系统(含文档、数据库)源码

    4Easyui之权限系统源码

    5ASP.NETMVC+EF框架+EasyUI实现权限管理源码

    6通用OA系统增强源码

    7Entity Framework4.1+MVC3+Jquery EasyUI的DEMO源码

    8基于FineUI的通用权限管理框架源码

    9WPF仿迅雷7界面UI效果

    10WEB在线流程图设计器GOOFLOW源码

    广而告之