Insight.Database - .NET Micro ORM,第 1 部分 - 使用自动接口实现在数据访问层中编写更少的代码

为什么需要 Insight.Database?

Insight.Database具有其他 .NET Micro-ORM 的所有共同特性。Insight.Database但与其他 ORM 相比,这篇文章更多地解释了独特和有趣的特性。

话题

  1. 自动接口实现
  2. 带有异步的 SQL 属性
  3. 在一行中传递 SQL 表值参数
  4. 获取多个结果结构
  5. .NET Core 的依赖注入
  6. 带最小起订量的单元测试 WeatherForecastController
  7. MOQ 多个结果集

1. 自动接口实现

我可以说自动接口实现是这里的一个专有功能,我们可以在接口中编写 1 或 2 行代码来执行完整的数据库操作,即使它很复杂。

快速浏览

  1. 创建一个在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>
  2. 为表创建模型或 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>
  3. 为存储库创建一个接口(您不需要实现接口的具体类。)

    注意:如您所见,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>
  4. 从服务层或控制器的构造函数访问存储库接口:
    C#
  5. 而已!您不需要创建实现存储库接口的具体存储库类。因为,在这一切之下,InsightAnonymous在运行时创建了一个这样的类:
    C#

让我们继续学习本教程

先决条件

  1. 安装 .NET Core 3.1.0 或更高版本的 SDK。
  2. 安装 Visual Studio 2019 和 SQL Server Management Studio。
  3. SQL Server 2008 R2 或更高版本。

创建一个新数据库并执行下面给出的 SQL 脚本。

创建数据库和样本表

SQL
收缩▲   

获取所有 WeatherForecast 详细信息的简单 Get 方法

  1. 创建一个存储过程来获取:
    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>
  2. WeatherForecastIWeatherForecastRepository.cs创建一个接口:

    注意:如您所见,SQL 过程名称和接口方法名称是相同的。

    C#
  3. 在 Controller 的构造函数中 为IWeatherForecastRepository.cs创建一个实例。
    C#
  4. 从存储库获取WeatherForecast详细信息:
    C#
  5. 结果大摇大摆:

表数据供您参考:

2.简单的WeatherForecast Get with SQL Attribute with Async

  1. 使用命名标准“ 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>
  2. 使用方法和 SQL 属性 更新IWeatherForecastRepository.cs :Async
    C#
  3. 从存储库获取WeatherForecast详细信息:
    C#

     
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值