webapi框架搭建系列博客 为什么用ef? 我相信很多博友和我一样都有这种“选择困难症”,我曾经有,现在也有,这是技术人的一个通病——总想用“更完美”的方式去实现,导致在技术选择上犹豫不决,或总是推翻别人的技术路线,甚至屡屡推翻自己从前的想法,这种专研的精神固然不错,但随着年龄的增大,会发现这种习惯已将自己弄得很累,其实真没有必要.我觉得技术上永远没有“完美”的解决方案,如果揪着缺点去比较和选择,不管最终选择了什么,以后都会后悔.因为你总是看到它身上的缺点.orm的框架也有很多,大家都说ent…
webapi框架搭建系列博客 webapi框架搭建-创建项目(一) webapi框架搭建-创建项目(二)-以iis为部署环境的配置 webapi框架搭建-创建项目(三)-webapi owin webapi框架搭建-依赖注入之autofac webapi框架搭建-日志管理log4net webapi框架搭建-webapi异常处理 webapi框架搭建-数据访问ef code first webapi框架搭建-安全机制(一) webapi框架搭建-安全机制(二)-身份验证 webapi框架搭建-安…
上一篇:创建项目(二) 在上一篇里,我们已经创建好了webapi应用,并已经部署到iis里,本篇讲如何用owin自宿主或是iis宿主来部署webapi应用. owin介绍 传统的asp.net网站只能部署在iis下,缺点是网站应用和服务器(即iis)耦合,这样便导致一个简单的请求在最终到达我们自己写的业务代码之前还要经过一系列iis自带的各种modules和handlers及其它的机制(asp.net request pipeline),在我的开发经验中就经常遇到各种iis的问题导致一个简单的请…
上篇:webapi快速框架搭建-创建项目(一) 在"创建项目(一)"这一篇里已经创建了一个空的项目,但项目上什么都没有,本篇描述如何将webapi配置成部署在iis上. 步骤 用nuget添加webapi包 空项目默认是没有webapi相关的dll,要自己去nuget里安装.   创建Global.asax全局应用程序类   所有以iis为载体的网站应用的入口为HttpApplication类的Application_Start方法(不管是webapi还是mvc还是web form都是…
前言 本篇讲怎么在前几篇已经创建好的项目里加上日志处理机制,我们采用Log4net技术.跟多的log4net技术的细节请查阅log4net的官网. log4net官网:http://logging.apache.org/log4net/ 步骤 引用log4net包 在nuget里引入包 此包没有任何的依赖项 编写日志处理代码 现在项目已经用到了autofac的依赖注入技术(查看webapi框架搭建-依赖注入之autofac),如果不用依赖注入,log4net的用法类似下面的代码 using Sy…
webapi框架搭建系列博客 在上一篇的webapi框架搭建-安全机制(三)-简单的基于角色的权限控制,某个角色拥有哪些接口的权限是用硬编码的方式写在接口上的,如RBAuthorize(Roles = "user,member"),在小的项目里,其实也够用了,但如果项目的需求就是要可在后台管理界面里动态配置某某角色有某某接口的权限怎么办?这编我们一起来实现. 首先,我们要在数据库里存储这些需要权限控制的接口,其次,要在上编的RBAuthorizeAttribute的IsAuthoriz…
webapi框架搭建系列博客 上一篇已经完成了“身份验证”,如果只是想简单的实现基于角色的权限管理,我们基本上不用写代码,微软已经提供了authorize特性,直接用就行. Authorize特性的使用方法 配置Authorize 比较简单,直接上代码 using System.Collections.Generic; using System.Net.Http; using System.Security.Claims; using System.Web.Http; using webapi.…
本系列博客链接:webapi框架搭建系列博客 前言 webapi接口是开放给外部使用的,包括接口的地址,传参的规范,还有返回结果的说明.正因为接口的开放性,使得接口的安全很重要.试想一下,用抓包工具(如fiddler),甚至浏览器获取到接口的规范后(甚至可以猜到接口的其它规范),如果接口没有做”安全“这一道防火墙,任何人都可以调用接口来获取及提交数据,这真是太可怕了.17年我负责一个气象类项目的开发,其中有些功能是我们无法完成但甲方要求必须有的功能,并给我们展示了实现该功能的一个产品.后面通过对…
NHibernate:教你如何搭建数据访问层? 什么是NHibernate NHibernate 是一个基于.net 的针对关系型数据库的对象持久化类库.NHibernate 来源于非常优秀的基于Java的Hibernate 关系型持久化工具.NHibernate 从数据库底层来持久化你的.net 对象到关系型数据库.NHibernate 为你处理这些,远胜于你不得不写SQL去从数据库存取对象.你的代码仅仅和对象关联,NHibernat 自动产生SQL语句,并确保对象提交到正确的表和字段中去.…
前言 c#的依赖注入框架有unity.autofac,两个博主都用过,感觉unity比较简单而autofac的功能相对更丰富(自然也更复杂一点),本篇将基于前几篇已经创建好的webapi项目,引入autofac功能. 前面我们已经搭建好webapi,并用了owin技术.这篇的autofac也将基于这两种技术进行开发. 步骤 引入包 共三个nuget包:Autofac.WebApi2,Autofac.Owin,Autofac.WebApi2.Owin    autofac注册组件 using Sy…
webapi框架搭建系列博客 前言 上一篇我们已经完成了项目的日志管理,在项目开发中日志会经常记录程序中的异常,供后续问题排查使用.本篇讲如何在webapi里加入异常处理机制. 目的和原则 1.程序任何地方都不能catch掉异常,如果要catch也请重新throw异常或是将异常记录到日志里.避免异常被“吃掉“,导致无法排查程序的bug. 2.webapi接口的”请求成功“和”请求失败“以一定的标准规范提供给外部 我的规范为: 所有的成功请求返回200(response的status为200),返…
webapi框架搭建系列博客 身份验证(authentication)的责任是识别出http请求者的身份,除此之外尽量不要管其它的事.webapi的authentication我用authentication filter技术去解决. 参考资料: https://docs.microsoft.com/en-us/aspnet/web-api/overview/security/authentication-filters 步骤如下 创建authentication filter 在项目里新建文件…
背景 17年开始,公司开始向DotNet Core转型,面对ORM工具的选型,当时围绕Dapper和EF发生了激烈的讨论.项目团队更加关注快速交付,他们主张使用EF这种能快速开发的ORM工具:而在线业务团队对性能有更高的要求,他们更希望使用能直接执行Sql语句的Dapper,这样可控性更高.而对于架构团队来说,满足开发团队的各种需求,提高他们的开发效率是最核心的价值所在,所以当时决定做一个混合型的既支持EF又支持dapper的数据仓储. 为什么选择EF+Dapper 目前来说EF和Dapper是…
介绍 本文的目的是解释微软的实体框架提供的三种数据访问方法.网上有好几篇关于这个话题的好文章,但是我想以一个教程的形式更详细地介绍这个话题,这个教程对于开始学习实体框架及其方法的人来说是个入门.我们将逐步探索每个方法,通过这些方法,我们可以在应用程序中使用实体框架访问数据库和数据.我将使用实体框架版本6.2和.NETFramework 4.6.和Visual Studio 2017的教程.对于数据库,我们将使用SQLServer.如果没有安装SQLServer,则可以使用本地数据库.我将在本文中…
MVC5中Model层开发数据注解   ASP.NET MVC5中Model层开发,使用的数据注解有三个作用: 数据映射(把Model层的类用EntityFramework映射成对应的表) 数据验证(在服务器端和客户端验证数据的有效性) 数据显示(在View层显示相应的数据) 数据注解相关的命名空间如下: System.ComponentModel.DataAnnotations System.ComponentModel.DataAnnotations.Schema System.Web.Mv…
大家好,我是张飞洪,感谢您的阅读,我会不定期和你分享阅读心得,希望我的文章能成为你成长路上的一块垫脚石,我们一起精进. 几乎所有的业务应用程序都要适用一种数据库基础架构,用来实现数据访问逻辑,以便从数据库读取或写入数据,我们还需要处理数据库事务,以确保数据源中的一致性. ABP框架可以与任何数据库兼容,同时它提供了EF Core和MongoDB的内置集成包.您将通过定义DbContext类.将实体映射到数据库表.实现仓储库以及在有实体时部署加载相关实体的不同方式,学习如何将EF Core与ABP…
大家好,我是张飞洪,感谢您的阅读,我会不定期和你分享学习心得,希望我的文章能成为你成长路上的一块垫脚石,我们一起精进. EF Core集成 EF Core是微软的ORM,可以使用它与主流的数据库提供商合作,如SQL Server.Oracle.MySQL.PostgreSQL和Cosmos DB.当您使用ABP命令行界面(CLI)创建新的ABP解决方案时,它是默认的数据库提供程序. 默认情况下,启动模板使用SQL Server.如果您更喜欢其他的数据库管理系统(DBMS),可以在创建新解决方案时…
一天做项目的时候遇到这样的问题,MVC4用EF访问数据查询用linq语句的时候报错找不到表名:报错如下图: 研究了几种情况,最后还是没有找到正真的问题所在,不过可能是和路由解析问题有关,暂时还没有进行这个研究,但是目前这个问题是有解决办法的,方法如下: 1.有下划线的表名和实体类名是相同的可以找到表名 2.没有下划线的表名和实体类名不相同的可以找到表名…
本文只是一些基本的vs操作,供初学者参考,有基础的请查看 创建项目(二) 创建项目(三) 前言 为了从头了解webapi的技术,创建一个为空的项目 步骤 我用的是vs2017,从文件-->新建-->项目-->web-->asp.net web应用程序. vs2017以前的版本在创建各种类型的项目的操作路径是不同的.在vs2017里创建web网站类的应用只有asp.net core web和asp.net web应用程序(.net framework)两种,而webapi ,mvc,…
一.最近在使用Wcf创建数据服务,但是在和EF框架搭建数据访问时遇到了许多问题 下面是目前整理的基本框架代码,经供参考使用,源代码地址:http://git.oschina.net/tiama3798/Wcf_EFDemo 说明:框架搭建中使用EF访问数据库,简单工厂模式组织代码 WCFThree.Entity:简单工厂模式的实体层.EF的实体模板.WCF的数据契约 WCFThree.Abstract:简单工厂模式的抽象接口层.WCF服务操作契约 WCFThree.Factory:简单工厂模式的…
前言      从上篇30岁找份程序员的工作(伪程序员的独白),文章开始,我说过我要用我自学的技术,来搭建一个博客系统,也希望大家给点意见,另外我很感谢博客园的各位朋友们,对我那篇算是自我阶段总结文章的评论,在里面能看出有很多种声音,有支持的我的朋友给我加油打气,有分享自己工作经历的朋友,有提出忠肯意见的朋友,有对记事本写代码吐槽的朋友,也有希望让我换个行业的,觉得我可能不适合这个行业朋友,不管怎样,我都接受,都是大家同行的一些忠告,谢谢大家. 首先我要在这里感谢很多博客园里面的大牛,写了很多系…
习MVC有一段时间了,决定自己写一套Demo了,写完源码再共享. PS:如果图片模糊,鼠标右击复制图片网址,然后在浏览器中打开即可. 一.框架搭建 二.创建数据库 1.创建一个空的EF code frist环境,输入的名字为52MVCBlogDB 2.选择空的Code Frist模型 3.创建一个Models文件存放所有表的类,这里先创建一个用户信息表的类sysUserInfo sysUserInfo类: class sysUserInfo { /// <summary> /// 用户ID /…
.Net Core3.0 WebApi 项目框架搭建:目录 SqlSugar介绍 SqlSugar是国人开发者开发的一款基于.NET的ORM框架,是可以运行在.NET 4.+ & .NET CORE的高性能.轻量级 ORM框架,众多.NET框架中最容易使用的数据库访问技术.官网http://www.codeisbug.com/Doc/8 SqlSugar的优点: 1.高性能 ,不夸张的说,去掉Sql在数据库执行的时间,SqlSugar是EF数倍性能,另外在批量操作和一对多查询上也有不错的SQL优…
.Net Core3.0 WebApi 项目框架搭建:目录 理论介绍 仓储(Respository)是存在于工作单元和数据库之间单独分离出来的一层,是对数据访问的封装.其优点: 1)业务层不需要知道它的具体实现,达到了分离关注点. 2)提高了对数据库访问的维护,对于仓储的改变并不会改变业务的逻辑,数据库可以用Sql Server(该系列博客使用).MySql等. 基本项目架构 Common 公共组件层,存放一些公共的方法 Model 实体Model数据层,Enity文件夹中,存放的是整个项目的数…
前言:之前在下总结编写了一篇 EF框架搭建小总结--ModelFirst模型优先 博文,看到一段时间内该博文的访问量蹭.蹭蹭.蹭蹭蹭...往上涨(实际也不是很多,嘿嘿),但是还是按捺不住内心的喜悦(蛮有成就感的),感觉为大家做了一点点小小的贡献,在下也就再接再厉(趁风大,再浪浪),总结一篇  CodeFirst代码优先的博文,若有不当之处,还望大家斧正. Code First介绍:     Code First模式是一种很cool的模式,手动创建POCO(全称Plain Old Class Ob…
前言:之前在下总结编写了一篇 EF框架搭建小总结--ModelFirst模型优先 博文,看到一段时间内该博文的访问量蹭.蹭蹭.蹭蹭蹭...往上涨(实际也不是很多,嘿嘿),但是还是按捺不住内心的喜悦(蛮有成就感的),感觉为大家做了一点点小小的贡献,在下也就再接再厉(趁风大,再浪浪),总结一篇  CodeFirst代码优先的博文,若有不当之处,还望大家斧正. Code First介绍:     Code First模式是一种很cool的模式,手动创建POCO(全称Plain Old Class Ob…
一 项目概述1.1 角色1.2 业务术语1.3 项目效果展示二 项目需求三 项目概要3.1 项目技术架构3.2 项目目录结构3.3 项目技术选型3.4 项目整体集群规划3.5 创建项目工程四 APP 数据生成模块4.1 创建公共模块工程4.1.1 创建 Java 工程,导入 pom 文件4.1.2 创建 AppBaseLog 基类4.1.3 创建 AppErrorLog 错误日志类4.1.4 创建 AppEventLog 事件日志类4.1.5 创建 AppPageLog 页面日志类4.1.6 创…
一:框架搭建     1:先创建Model. 2:创建数据访问接口层.IUserInfoDal 在该接口中定义了常见的方法CURD以及分页方法. public interface IUserInfoDal { IQueryable<UserInfo> LoadEntities(System.Linq.Expressions.Expression<Func<UserInfo, bool>> whereLambda);     IQueryable<UserInfo&…
.Net Core3.0 WebApi 项目框架搭建:目录 什么是JWT 根据维基百科定义,JWT(读作 [/dʒɒt/]),即JSON Web Tokens,是一种基于JSON的.用于在网络上声明某种主张的令牌(token).JWT通常由三部分组成: 头信息(header), 消息体(payload)和签名(signature).它是一种用于双方之间传递安全信息的表述性声明规范.JWT作为一个开放的标准(RFC 7519),定义了一种简洁的.自包含的方法,从而使通信双方实现以JSON对象的形式…
系列目录: [Docker] CentOS7 安装 Docker 及其使用方法 ( 一 ) [Docker] 使用Docker 在阿里云 Centos7 部署 MySQL 和 Redis (二) [Docker] .Net Core 3.1 webapi 集成EF Code First,使用MySql进行业务操作 .配置swagger (三) .......持续不定期更新中 之前一直用.Net Core 2.1 ,发现3.1后有很多地方和原来的操作不同,踩了一些坑,所以记录一下3.1的操作方法…