更新: 2019-12-23 foreignkey 并不一样要配上 alternate key,其实只要是 unique 就可以了. 和 sql server 是一样的, 经常有一种错觉 primary key = foreignkey 所以只能有 1个 column 但是很多时候用多个 column 来约束对业务的管理是有帮助的. 所以其实只要是 unique, 不管多少 column, 都是拿来作为其它 table 的 foreignkey relation. modelBuilder.En…
更新 : 2018-11-26 这里记入一下关于 foreignKey cascade action 默认情况下如果我们使用 data annotation required + foreginkey . ef 会帮我们设计成 cascade delete 如果 foreignkey + nullable 就会是 cascade restrict. 如果使用 fluent api 的话就由我们设计了. ef 6.x 有一个功能可以把所有的 cascade delete 停掉, ef core 不…
ef core 有 unit of work 的概念,当我们 save change 时会自动使用 transaction 确保更新的一致性. 隔离级别是默认的 read committed 不允许脏读. 但是呢, 有时候我们希望拥有更好的隔离级别, 比如 repeatable read, serializable 那么就需要调用 database.beginTransaction 了. 一旦需要自己控制 trans 麻烦就跟着来了. 比如在多个服务嵌套调用时, 如何共享 trans 呢 ? 每…
Asp.Net Core 学习 基于.Net Core 2.2版本的学习笔记. 常识 像Django那样自动检查代码更新,自动重载服务器(太方便了) dotnet watch run 托管设置 设置项目文件的AspNetCoreHostingModel属性. <PropertyGroup> <TargetFramework>netcoreapp2.2</TargetFramework> <AspNetCoreHostingModel>InProcess<…
原文https://www.cnblogs.com/artech/p/net-core-di-06.html 毫不夸张地说,整个ASP.NET Core框架是建立在一个依赖注入框架之上的,它在应用启动时构建请求处理管道过程中,以及利用该管道处理每个请求过程中使用到的服务对象均来源于DI容器.该DI容器不仅为ASP.NET Core框架提供必要的服务,同时作为了应用的服务提供者,依赖注入已经成为了ASP.NET Core应用基本的编程模式.在前面一系列的文章中,我们主要从理论层面讲述了依赖注入这种…
原文:https://www.cnblogs.com/artech/p/net-core-di-03.html IoC主要体现了这样一种设计思想:通过将一组通用流程的控制权从应用转移到框架中以实现对流程的复用,并按照“好莱坞法则”实现应用程序的代码与框架之间的交互.我们可以采用若干设计模式以不同的方式实现IoC,比如我们在<依赖注入[2]: 基于IoC的设计模式>介绍的模板方法.工厂方法和抽象工厂,接下来我们介绍一种更为有价值的IoC模式,即依赖注入(DI:Dependency Injecti…
原文:https://www.cnblogs.com/artech/p/net-core-di-01.html 一.流程控制的反转 IoC的全名Inverse of Control,翻译成中文就是“控制反转”或者“控制倒置”.控制反转也好,控制倒置也罢,它体现的意思是控制权的转移,即原来控制权在A手中,现在需要B来接管.那么具体对于软件设计来说,IoC所谓的控制权的转移具有怎样的体现呢?要回答这个问题,就需要先了解IoC的C(Control)究竟指的是怎样一种控制.对于我们所在的任何一件事,不论…
原文https://www.cnblogs.com/artech/p/net-core-di-07.html 包含服务注册信息的IServiceCollection对象最终被用来创建作为DI容器的IServiceProvider对象.服务注册就是创建出现相应的ServiceDescriptor对象并将其添加到指定IServiceCollection集合对象中的过程. 一.ServiceDescriptor 通过<依赖注入[6]: .NET Core DI编程体验>的实例演示我们知道作为DI容器…
为了让读者朋友们能够对.NET Core DI框架的实现原理具有一个深刻而认识,我们采用与之类似的设计构架了一个名为Cat的DI框架.在上篇中我们介绍了Cat的基本编程模式,接下来我们就来聊聊Cat的设计和实现. 一.服务注册:ServiceRegistry 由于作为DI容器的Cat对象总是利用预先添加到服务注册来提供对应的服务实例,所以服务注册至关重要.如下所示的就是表示服务注册的ServiceRegistry的定义,它具有三个核心属性(ServiceType.Lifetime和Factory…
原文https://www.cnblogs.com/artech/p/net-core-di-04.html 本系列文章旨在剖析.NET Core的依赖注入框架的实现原理,到目前为止我们通过三篇文章从纯理论的角度对依赖注入进行了深入论述,为了让读者朋友能够更好地理解.NET Core的依赖注入框架的设计思想和实现原理,我们创建了一个简易版本的DI框架,也就是我们在前面文章中多次提及的Cat.我们会上下两篇来介绍这个被称为为Cat的DI框架,上篇介绍编程模型,下篇关注设计实现.[源代码从这里下载]…
原文:https://www.cnblogs.com/artech/p/net-core-di-02.html 正如我们在<控制反转>提到过的,很多人将IoC理解为一种“面向对象的设计模式”,实际上IoC自身不仅与面向对象没有必然的联系,它也算不上是一种设计模式.一般来讲,设计模式提供了一种解决某种具体问题的方案,但是IoC既没有一个针对性的问题领域,其自身没有提供一种可实施的解决方案,所以我更加倾向于将IoC视为一种设计原则.实际上很多我们熟悉的设计模式背后采用了IoC原则,接下来我们就来介…
前言 随着互联网的的高速发展,大多数的公司由于一开始使用的传统的硬件/软件架构,导致在业务不断发展的同时,系统也逐渐地逼近传统结构的极限. 于是,系统也急需进行结构上的升级换代. 在服务端,系统的I/O是很大的瓶颈.其中数据库的I/O最容易成为限制系统效率的一环.在优化数据库I/O这一环中,可以从优化系统调用数据库效率.数据库自身效率等多方面入手. 一般情况下,通过升级数据库服务器的硬件是最容易达到的.但是服务器资源不可能无限扩大,于是从调用数据库的效率方面入手是目前主流的优化方向. 于是读写分…
前言 前段时间写了EF core实现多租户的文章,实现了根据数据库,数据表进行多租户数据隔离. 今天开始写按照Schema分离的文章. 其实还有一种,是通过在数据表内添加一个字段做多租户的,但是这种模式我不打算讲了. 如果大家看了文章感觉完全衔接不上,可以先看看前面的系列文章: Asp.net core下利用EF core实现从数据实现多租户(1) Asp.net core下利用EF core实现从数据实现多租户(2) : 按表分离 EF core (code first) 通过自定义 Migr…
1.为什么不要给每个方法都写try catch 为每个方法都编写try catch是错误的做法,理由如下: a.重复嵌套的try catch是无用的,多余的. 这一点非常容易理解,下面的示例代码中,OutsideMethodA中的try catch是不起作用的. class NestedTryCatch { internal void OutsideMethodA() { try { this.InsideMethodB(); } catch (Exception ex) { Console.W…
EF Core 快速上手--EF Core 介绍 本章导航 从本书你能学到什么 对EF6.x 程序员的一些话 EF Core 概述 1.3.1 ORM框架的缺点 第一个EF Core应用   本文是对<Entity framework in action>部分章节的翻译,某些场景也会附上笔者实践的Demo.尽管很认真的斟酌,但是水平有限,还请各位批评和斧正.   Entity Framework Core, 或者 EF Core,是一个方便软件工程师访问数据库的库.有很多方法来构建这样的一个库…
ASP.NET MVC 学习笔记-7.自定义配置信息   ASP.NET程序中的web.config文件中,在appSettings这个配置节中能够保存一些配置,比如, 1 <appSettings> 2 <add key="LogInfoProvider" value="Cookie" />//登录信息保存方式 3 </appSettings> 但是这些配置都是单个字符串信息,在某些情况下,无法做到灵活配置. 针对这种情况,使用…
系列文章 EF Core 快速上手--EF Core 入门 本节导航 三种数据库关系类型建模 Migration方式创建和习修改数据库 定义和创建应用DbContext 将复杂查询拆分为子查询   本章主要介绍如何使用EF Core进行数据库读取,俗称查询.您将创建一个数据库,它包含EFCore中三种主要数据库关系类型.在这个过程当中,你将学会使用EF Core 创建和改变数据库的结构.   接下来你将学习到如何使用EF Core访问数据库并从数据库表中获取数据.在查看用主数据加载相关数据的各种…
[ASP.NET MVC] ASP.NET Identity学习笔记 - 原始码下载.ID型别差异 原始码下载 ASP.NET Identity是微软所贡献的开源项目,用来提供ASP.NET的验证.授权等等机制.原始码的位置如下: ASP.NET Identity 2.x https://aspnetidentity.codeplex.com/SourceControl/latest#Readme.markdown ASP.NET Identity 3.x [https://aspnetiden…
ASP.NET MVC学习笔记-----Filter(2) 接上篇ASP.NET MVC学习笔记-----Filter(1) Action Filter Action Filter可以基于任何目的使用,它需要实现IActionFilter接口: public interface IActionFilter { void OnActionExecuting(ActionExecutingContext filterContext); void OnActionExecuted(ActionExec…
ASP.NET MVC学习笔记-----Filter(1) Filter类型 接口 MVC的默认实现 Description Authorization IAuthorizationFilter AuthorizeAttribute 最先执行,在其他类型的filter和action方法前执行 Action IActionFilter ActionFilterAttribute 在action方法执行前和执行后执行 Result IResultFilter ActionFilterAttribut…
接上篇ASP.NET MVC学习笔记-----Filter(1) Action Filter Action Filter可以基于任何目的使用,它需要实现IActionFilter接口: public interface IActionFilter { void OnActionExecuting(ActionExecutingContext filterContext); void OnActionExecuted(ActionExecutedContext filterContext); }…
ASP.NET MVC 学习笔记-2.Razor语法   1.         表达式 表达式必须跟在“@”符号之后, 2.         代码块 代码块必须位于“@{}”中,并且每行代码必须以“:”结尾.代码块中定义的变量可能会被同一个域中的其他块使用.比如,定义在视图顶部的变量可以被同一视图中的代码块和代码段访问. 3.         布局 Razor通过layouts保持网页外观布局的一致性.布局模板包含基本的标签,并可以指定渲染视图内容的位置.比如 基本布局文件(_Layout.cs…
路由其实也可以很简单-------Asp.net WebAPI学习笔记(一)   MVC也好,WebAPI也好,据我所知,有部分人是因为复杂的路由,而不想去学的.曾经见过一位程序猿,在他MVC程序中,一切皆路由,url中是完全拒绝"?"和“&”.对此,我也不好说什么,搞不好是个人风格.路由虽然重要,但其实也只是实现MVC的一种手段,并非你用的路由越多,你的url完全不使用参数,你的MVC就越纯正.说实话,笔者一开始对路由也感到恐惧,但是阅读了官方文档后,发现路由其实也可以很简单…
之前记在github上的,现在搬运过来 变化还是很大的,感觉和Nodejs有点类似,比如中间件的使用 ,努力学习ing... 优点 不依赖IIS 开源和跨平台 中间件支持 性能优化 无所不在的依赖注入 标准日志记录 Mvc 和 WebApi 合二为一 MVC 标签帮助 CLI工具 1.cookie 和 Session 因为<通用数据保护条例>(General Data Protection Regulation,简称GDPR)为欧洲联盟于2018年5月25日出台的条例, Asp.Net Cor…
前言 因为工作原因博客断断续续更新,其实在很早以前就有想法做一套关于ASP.NET CORE整体学习度路线,整体来说国内的环境的.NET生态环境还是相对比较严峻的,但是干一行爱一行,还是希望更多人加入.NET的大环境当中.所以萌生了做一篇关于.NET CORE 学习的学习笔记,借着今天小酌几杯的机会,把这个想法践行一下. 为什么学习 ASP.NET Core程序 数百万开发人员在使用ASP.NET创建Web应用.而ASP.NET Core 是对ASP.NET 的重新设计,在结构上做了更改,产生了…
EF Core (EntityFramework Core)是实体关系映射(O/RM)数据库访问框架.这个模式的好处就是让开发人员可以用对象模型来操作数据库,这是一种对开发人员较为友好的方式. O/RM牛逼在哪? 非对象模型操作数据库,就要直接用sql语言来做大量的CURD操作(Creat 创建:update 更新:read 读取:delete 删除).这些操作编写繁琐又容易出错,目的却只是为了操作数据库,而不是业务.而对象模型(O/RM)是基于业务,使用的就是自身的程序语言,相当于把操作数据库…
参考 : http://www.cnblogs.com/xishuai/p/aspnet-5-identity-part-one.html http://cnblogs.com/xishuai/p/aspnet-5-or-core1--identity-part-two.html https://cnblogs.com/savorboard/p/dotnetcore-data-protection.html http://cnblogs.com/savorboard/p/dotnet-core-…
参考 : http://www.cnblogs.com/xishuai/p/3700052.html http://www.cnblogs.com/xishuai/p/3704435.html http://www.cnblogs.com/xishuai/p/3708483.html automapper 并不是 dotnet core 的东西啦,只是记入在这里而已. automapper 是一个简单的库,帮我们处理对象和对象的映射. 我们做开发通常会用到 ef core, entity 基本上…
Ef core 3.0 一些要注意的改变 refer : https://docs.microsoft.com/en-us/ef/core/what-is-new/ef-core-3.0/breaking-changes#dc 1. 要另外安装 nuget Microsoft.EntityFrameworkCore.SqlServer 2. 另外装 tools dotnet tool install --global dotnet-ef nuget : Microsoft.EntityFrame…
1. Entity Framework (EF) Core 是轻量化.可扩展.开源和跨平台的数据访问技术,它还是一 种对象关系映射器 (ORM),它使 .NET 开发人员能够使用面向对象的思想处理数据库,它消除 了开发人员通常需要编写大量数数据访问代码的需要. 2. 安装相关包Microsoft.EntityFrameworkCore Microsoft.EntityFrameworkCore.Design Microsoft.EntityFrameworkCore.Tools由微软维护的支持程…