为什么需要 Insight.Database?
Insight.Database
具有其他 .NET Micro-ORM 的所有共同特性。Insight.Database
但与其他 ORM 相比,这篇文章更多地解释了独特和有趣的特性。
- Github 源码:https ://github.com/jonwagner/Insight.Database
- Github 维基:https ://github.com/jonwagner/Insight.Database/wiki
- 演示项目网址:https ://github.com/keerthiajap/Insight.Database.Demo
话题
- 自动接口实现
- 带有异步的 SQL 属性
- 在一行中传递 SQL 表值参数
- 获取多个结果结构
- .NET Core 的依赖注入
- 带最小起订量的单元测试 WeatherForecastController
- MOQ 多个结果集
1. 自动接口实现
我可以说自动接口实现是这里的一个专有功能,我们可以在接口中编写 1 或 2 行代码来执行完整的数据库操作,即使它很复杂。
快速浏览
- 创建一个在
Beer
表中搜索的过程,如下所示:SQL<span style="color:#000000"><span style="background-color:#fbedbb"><span style="color:#0000ff">CREATE</span> <span style="color:#0000ff">PROC</span> GetBeerByType <span style="color:#339999">@type</span> [<span style="color:#0000ff">varchar</span>] <span style="color:#0000ff">AS</span> <span style="color:#0000ff">SELECT</span> * <span style="color:#0000ff">FROM</span> Beer <span style="color:#0000ff">WHERE</span> <span style="color:#0000ff">Type</span> = <span style="color:#339999">@type</span> <span style="color:#0000ff">GO</span></span></span>
- 为表创建模型或 POCO
Beer
:C#<span style="color:#000000"><span style="background-color:#fbedbb"><span style="color:#0000ff">class</span> Beer { <span style="color:#0000ff">public</span> <span style="color:#0000ff">string</span> Name; <span style="color:#0000ff">public</span> <span style="color:#0000ff">string</span> Flavor; }</span></span>
- 为存储库创建一个接口(您不需要实现接口的具体类。)
注意:如您所见,SQL 过程名称“
GetBeerByType
”和接口方法名称“GetBeerByType
”是相同的。但别担心,您也可以使用 SQL 属性来获得更好的命名约定。C#*或者**
C#<span style="color:#000000"><span style="background-color:#fbedbb"><span style="color:#0000ff">public</span> <span style="color:#0000ff">interface</span> IBeerRepository { [Sql(<span style="color:#800080">"</span><span style="color:#800080">[dbo].[GetBeerByType]"</span>)] <span style="color:#008000"><em>//</em></span><span style="color:#008000"><em> For better understanding </em></span> IList<Beer> GetBeerByType(<span style="color:#0000ff">string</span> type); }</span></span>
- 从服务层或控制器的构造函数访问存储库接口:
C#
- 而已!您不需要创建实现存储库接口的具体存储库类。因为,在这一切之下,Insight
Anonymous
在运行时创建了一个这样的类:C#
让我们继续学习本教程
先决条件
- 安装 .NET Core 3.1.0 或更高版本的 SDK。
- 安装 Visual Studio 2019 和 SQL Server Management Studio。
- SQL Server 2008 R2 或更高版本。
创建一个新数据库并执行下面给出的 SQL 脚本。
创建数据库和样本表
SQL
收缩▲
获取所有 WeatherForecast 详细信息的简单 Get 方法
- 创建一个存储过程来获取:
SQL
<span style="color:#000000"><span style="background-color:#fbedbb"><span style="color:#0000ff">CREATE</span> <span style="color:#0000ff">PROC</span> GetAllWeatherForecast <span style="color:#0000ff">AS</span> <span style="color:#0000ff">SELECT</span> * <span style="color:#0000ff">FROM</span> [dbo].[WeatherForecast] <span style="color:#0000ff">GO</span></span></span>
WeatherForecast
为IWeatherForecastRepository.cs创建一个接口:注意:如您所见,SQL 过程名称和接口方法名称是相同的。
C#- 在 Controller 的构造函数中 为IWeatherForecastRepository.cs创建一个实例。
C#
- 从存储库获取
WeatherForecast
详细信息:C# - 结果大摇大摆:
表数据供您参考:
2.简单的WeatherForecast Get with SQL Attribute with Async
- 使用命名标准“
P_GetAllWeatherForecast
”创建新的存储过程Get
:SQL<span style="color:#000000"><span style="background-color:#fbedbb"><span style="color:#0000ff">CREATE</span> <span style="color:#0000ff">PROC</span> P_GetAllWeatherForecast <span style="color:#0000ff">AS</span> <span style="color:#0000ff">SELECT</span> * <span style="color:#0000ff">FROM</span> [dbo].[WeatherForecast] <span style="color:#0000ff">GO</span></span></span>
- 使用方法和 SQL 属性 更新IWeatherForecastRepository.cs :
Async
C# - 从存储库获取
WeatherForecast
详细信息:C#