前言

  • 本文是按照时间顺序记录的流水帐,未经整理
  • 流水帐的好处在于符合认知规律

数据库环境

Oracle数据库11gR2下载地址 - WebLogic Android 博客
将注册表中的服务对应的表项删除后,重启即可看到服务项被删除

Oracle 11g安装步骤详谈 - starskyhu - 博客园
Oracle 十全大补汤 | AMAN’s BLOG

执行sqlplus报错SP2-0750: You may need to set ORACLE_HOME to your Oracle software directoryORACLE_HOME环境变量未配置好: 需要到app…home这一级
ORA-12560: TNS: 协议适配器错误未解决 重装oracle
Windows下把Oracle卸载干净 - 简书

INS-13001 环境不满足最低要求 忽略就行 也可参考更改配置文件(但是没看明白)
Oracle——异常集 · IanEiU

OUI-10137C:\Program Files\Oracle\Inventory没有删除(PS: 在这种情况下新生成的文件不用删除)
在注册表中没有找到指定的主目录名 据说是没有更改环境变量 但是这里是更改了的 或许和之前没有删除OUI-10137错误的文件有关

事后可登录 Oracle Enterprise Manager
仅管理员才是可以登录到 Enterprise Manager 执行管理任务 (如设置封锁, 电子邮件通知调度) 的数据库用户。

oracle安装成功结果

然后使用数据库管理软件连接:

Toad是数据库管理及开发的极佳工具,简单的说就是oem+sqlplus+pl/sql developer

错误 忘了怎么解决的了

1
Cannot load OCI DLL:  DriveLetter:\app\username\product\11.2.0\instantclient_11_1\oci.dll

错误 忘了怎么解决的了

1
2
This product require Microsoft MSXML 4.20.9818.0 or above and will not be installed at this time. Please refer to the product release notes for specific requirements. Microsoft MSXML 4(msxml.msi) can be installed from the Microsoft download centre . 
Benchmark Factory® for Databases is a database replay and performance testing tool that stress tests your environment by simulating users and SQL transactions on the database. Developers and QA professionals use Benchmark Factory and Toad to test SQL and database code against development SLAs and scalability. DBAs use Benchmark Factory and Toad to replay database workload or utilize industry standard benchmarks to mitigate the risks of database upgrades, migrations or patch releases.

GK: EF模型 和 ORM 的区别 -CSDN
ORM系列之Entity FrameWork详解

没问题可删

客户端

toad-1-安装时只用选toad-for-oracle

toad-2-环境配置

toad-3-貌似正常的环境

C#编程入门

有编程基础的话这一部分 基本可以边上手边学的

SK: Essential C# C# "本质论" filetype:pdf -博客 -baidu
C#本质论

整型数值类型(C# 参考)
避免对C#中float,double,decimal的错误理解

SK: Google 搜索 问号
如何谷歌一个问号
Google Hacking————你真的会用Google吗?

“+”强制搜索其后的一个单词,可以取消之前说的Google对常用单词的忽视(AND逻辑),
但是大部分常用英文符号(如问号,句号,逗号等)无法成为搜索关键字,加强制也不行;

SO SK: "decimal?"是不行的, 要使用SK: decimal 问号
C#中,为什么在值类型后面加问号
decimal?是可空类型就是可以将值设置为Null,decimal 不能设置为null
另见Class LinqExtensions: InsertWithDecimalIdentity

DotNet入门

背书

ASP.Net -Wiki是由微软在.NET Framework框架中所提供,开发Web应用程序的类库
封装在System.Web.dll文件中,显露出System.Web名字空间,并提供ASP.NET网页处理、扩展以及HTTP通道的应用程序与通信处理等工作,以及Web Service的基础架构。
ASP.NET是ASP技术的后继者,但它的发展性要比ASP技术要强大许多。

为了因应云端化所诱发的多作业平台集成与开发能力,微软特别开发一个新一代的 ASP.NET,称为 ASP.NET vNext,
并于 2014 年命名为 ASP.NET 5,但随后于 2016 年将它更名为 ASP.NET Core
由于架构上的差异颇大,因此未来 ASP.NET 与 ASP.NET Core 将是分别发展与维护,
Windows 平台的 ASP.NET 4.6 以上版本仍维持 Windows Only,但 ASP.NET Core 则是具有跨平台 (Windows, Mac OSX 与 Linux) 的能力。

遇见的很多问题及其大致解决思路

大都不是什么大不了的问题

virtual(C# 参考)

SK: Visual Studio 2017 C# 代码高亮 using "错误" -CSDN -程序错误 -插件 -更新 -调试
?? 运算符(C# 参考)

SK: VS2017 ASP.NET NUGET 程序集引用 報紅 但是程序可以正常運行
解决.NET 项目引用类库出现黄色警告
【Visual Studio】项目的引用显示黄色叹号

SK: 如何 更改所引用的工程文件的.Net版本 感叹号
C# 工程中引用出现感叹号
C# 工程中引用出现感叹号
VS中修改.net版本

SK: Microsoft.AI.Web 黄色叹号
无法加载文件或程序集“Microsoft.AI.Web”或其依赖项之一。该系统找不到指定的文件

SK: 未能找到类型或命名空间名 "AutoMap From"
VS的ASP.NET项目中cshtml关键词出错 红线,当前上下文中不存在名称
c# – 命名空间不被识别(即使它在那里)
解决Visual studio编写C#时“未能找到类型名称或命名空间名称XXX…”错误

SK: System.BadImageFormatException: 未能加载文件或程序集 或它的某一个依赖项。试图加载格式不正确的程序。。
‘InstallUtil’ 不是内部或外部命令,也不是可运行的程序
“vcvars32.bat”
Installutil.exe(安装程序工具)
未能加载文件或程序集“XXXXXX”或它的某一个依赖项。试图加载格式不正确的程序。

1
2
3
4
5
6
7
8
9
10
11
vsCommandPrompt32(应该使用项目目录下边自带的233)
: 然后出现类似的内容
>"C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\VC\Auxiliary\Build\vcvars32.bat"
**********************************************************************
** Visual Studio 2017 Developer Command Prompt v15.8.0
** Copyright (c) 2017 Microsoft Corporation
**********************************************************************
[vcvarsall.bat] Environment initialized for: 'x86'

: 之后就可以使用词命令安装服务了
InstallUtil ./WinService.exe

SK: X ORA-28547:connection to server failed,probable Oracle Net admin error
用Navicat连接Oracle数据库时报错ORA-28547:connection to server failed, probable Oracle Net admin error - 不忘初心 - CSDN博客

SK: Navicat 连接 ORACLE
Navicat Premium 连接Oracle 数据库(图文教程) - 周江霄 - CSDN博客

SK: 如何 测试 IIS Express Web API postman
如何在ASP.NET Core Web API测试中使用Postman
使用 Postman 调试 ASP.NET Core 开发的 API - walterlv
教程:使用 ASP.NET Core MVC 创建 Web API

SK: 当前不会命中断点 还未
VS2017调试代码显示“当前无法命中断点,还没有为该文档加载任何符号”
Visual Studio 当前不会命中断点的问题
PS: 只改过部分配置 实在乱掉可以参考admin的VS配置 或还原

SK 在证书存储区中找不到清单签名证书

执行interfaceRpo.Get遇到异常(莫非是由于没有实现..?)“System.Reflection.AmbiguousMatchException”类型的异常在 mscorlib.dll 中发生

ABP框架

ABP简单架构

强调对数据进行变动的是业务(Business), 仓储只实现查询, 数据变动已经被基础的仓储接口实现

基本使用

SK: "IRepository" docs 教程
ABP 教程文档 1-1 手把手引进门之 AngularJs, ASP.NET MVC, Web API 和 EntityFramework(官方教程翻译版 版本3.2.5)含学习资料
设计基础结构持久性层

SK: IRepository Query接口 用法
NopCommerce源码架构详解–EF数据访问实例详解
EntityFramework用法探索(四)Repository和UnitOfWork - 匠心十年 - 博客园

1
2
int cnt = db.GetTable<ORM_ENTITY_NAME>().Where(p => p.id == id).Delete();
return cnt > 0;

SK: IRepository Get Single 区别
分享基于Entity Framework的Repository模式设计(附源码)

SK: "System.Reflection.AmbiguousMatchException" (位于 mscorlib.dll 中
微软DotNet文档 AmbiguousMatchException Constructors


单元测试

吐槽安装 xunit生成插件后即可自动创建模板(当然, 得改改)
吐槽另外 无法直接对Controller进行测试(估计需要开启服务, 且要引入HTTP以及测试的内容所处的项目 实际上项目跑起来后并不能执行测试)
吐槽测试Servise又需要登录…

这应该是postman最详细的中文使用教程了
SK: Postman 测试 文件接口postman测试上传文件

SK: xunit Microsoft.VisualStudio.TestTools.UnitTesting 区别C#单元测试,带你快速入门
安装单元测试框架
Live Unit Testing 简介
SK VS 右键创建 Xunit 单元测试
使用xUnit为.net core程序进行单元测试(1)
Visual Studio 2017 优雅单元测试

代码质量随想录(六)用心写好注释
代码质量随想录(六)用心写好注释

在持久仓库调用

  1. DataContext.GetTable Method
  2. Query
  3. Excute

与仓库实际的EntityType不符时(即直接执行任何非声明仓库的sql语句)Xunit单元测试都会出现以下类似的错误

1
2
System.Reflection.TargetInvocationException
System.UnauthorizedAccessException

使用以下语句后可以保证

1
2
3
4
5
6
7
8
// IUnitOfWorkManager中IUnitOfWorkCompleteHandle Begin();
using (var uow = _unitOfWork.Begin())
{
var result = _testerService.TestFun(entity);
Assert.True(result != null, "测试成功!");
// IUnitOfWorkCompleteHandle中void Complete();
uow.Complete();
}

SK: ABP 联查 IRepository

SK: IUnitOfWorkCompleteHandle Begin()ABP拦截器之UnitOfWorkRegistrar(二)

如果一个带工作单元的方法调用了另外一个带工作单元的方法的时候,那么这两个方法是会共享相同的连接和事物的,并且第一个调用的方法管理这个工作单元,第二个进行复用,所以上面的这个ICurrentUnitOfWorkProvider接口主要是为了解决多个工作单元互相调用的问题。
VS中如何添加自定义 代码片段

单元测试报告显示
System.InvalidOperationException : 序列不包含任何元素
这个貌似是由于没有查询到元素(但加上后面的关联单元语句后会返回null)
Message: System.NullReferenceException : 未将对象引用设置到对象的实例。
使用了Single方法Gets exactly one entity with given predicate. Throws exception if no entity or more than one entity.

1
2
3
4
5
6
7
8
public class NameRepository : RepositoryBase<Name_Table>, INameRepository{
// implement
}
// Name必须相同, 否则会
Message: Castle.MicroKernel.Handlers.HandlerException : Can't create component 'Sample.Abp.Service.NameService' as it has dependencies to be satisfied.

'Sample.Abp.Service.NameService' is waiting for the following dependencies:
- Service 'Sample.Abp.IRepositories.NameRepository' which was not registered.

SK: C# 类似 org.springframework.beans BeanUtils.copyProperties 的方法慎用BeanUtils的对象拷贝方法

初始化测试资源

C# 析构函数(Destructor)和终结器(Finalizer)——托管资源的释放
->官方终结器(C# 编程指南)
我们只能知道GC会回收这两个对象,但在.NET中,由于GC的存在,究竟何时调用析构函数我们是不能确认的。

.NET 单元测试样例 (NUnit工具)

释放资源

Xunit.Abstractions.IAfterTestFinished;
SK: XUnit After Test FinishedRun code once before and after ALL tests in xUnit.net
SK: C# lambda 表达式Lambda 表达式(C# 编程指南)

最后发现 官方的文档中:

1
2
3
4
5
6
7
8
9
10
11
//
// 摘要:
// 提供一种用于释放非托管资源的机制。 若要浏览此类型的.NET Framework 源代码,请参阅Reference Source。
[ComVisible(true)]
public interface IDisposable
{
//
// 摘要:
// 执行与释放或重置非托管资源关联的应用程序定义的任务。
void Dispose();
}

于是只需要重载Dispose方法就ok
xunit错误也会执行 其他没试过

最后:
c# – 使用XUnit断言异常


IIS

SK: 未找到WAS 服务在计算机“.”上没有找到WAS服务
HTTP 错误 404.0 - Not Found

快捷键在调试选项下可查看

.net core 附加到进程调试已解决博问_博客园

依然是可以的,只是进程不在是原来的w3wp进程了,而是dotnet.exe。

不过最好建议使用IIS进行反向代理,这样就可以通过进程的User Name明显的看到是在哪个dotnet.exe进程中了。