关闭

ABP官方文档(五十三)【集成Dapper】

标签: .netDapper基础设施层
890人阅读 评论(1) 收藏 举报
分类:

9.2 ABP基础设施层 - 集成Dapper

9.2.1 简介

Dapper 是基于.NET的一种对象关系映射工具。Abp.Dapper简单的将Dapper集成到ABP。它作为第二个ORM可以与EF 6.x, EF Core 或者 Nhibernate 工作。

9.2.2 安装

在开始之前,你需要安装Abp.Dapper以及 EF 6.x, EF Core 或者 NHibernate 这3个当中的任意一个你想用的到项目中。

9.2.3 注册Module

首先你要在Module类上添加 DependsOn 特性,并且使用 AbpDapperModule 作为传入参数。这样就可以注册它到你的模块中了。

[DependsOn(
     typeof(AbpEntityFrameworkCoreModule),
     typeof(AbpDapperModule)
)]
public class MyModule : AbpModule
{
    public override void Initialize()
    {
        IocManager.RegisterAssemblyByConvention(typeof(SampleApplicationModule).GetAssembly());
    }
}

注意:依赖关系的先后顺序 AbpDapperModule 依赖应该在 EF Core依赖之后。

9.2.4 实体与表的映射

你可以配置映射。例如:实体 Person 与表 Persons 的映射,如下所示:

public class PersonMapper : ClassMapper<Person>
{
    public PersonMapper()
    {
        Table("Persons");
        Map(x => x.Roles).Ignore();
        AutoMap();
    }
}

你应该在模块类中配置包含Mapper类。例如:

[DependsOn(
     typeof(AbpEntityFrameworkModule),
     typeof(AbpDapperModule)
)]
public class MyModule : AbpModule
{
    public override void Initialize()
    {
        IocManager.RegisterAssemblyByConvention(typeof(SampleApplicationModule).GetAssembly());

        //这里会自动去扫描程序集中配置好的映射关系
        DapperExtensions.SetMappingAssemblies(new List<Assembly> { typeof(MyModule).GetAssembly() });
    }
}

9.2.5 使用

在注册完 AbpDapperModule 后,你可以使用泛型 IDapperRepository 接口(而不是使用标准的IRepository)来注入dapper仓储。

public class SomeApplicationService : ITransientDependency
{
    private readonly IDapperRepository<Person> _personDapperRepository;
    private readonly IRepository<Person> _personRepository;

    public SomeApplicationService(
        IRepository<Person> personRepository,
        IDapperRepository<Person> personDapperRepository)
    {
        _personRepository = personRepository;
        _personDapperRepository = personDapperRepository;
    }

    public void DoSomeStuff()
    {
        var people = _personDapperRepository.Query("select * from Persons");
    }
}

这样你就可以在相同的事务下,同时使用基于EF的仓储和Dapper的仓储了。

0
0
查看评论

abp及实战框架概述

接触abp也快一年了,有过大半年的abp项目开发经验,目前项目中所用的abp框架版本为0.10.3,最新的abp框架已经到了1.4,并且支持了asp.net core。关于abp框架有哪些特性、有什么好处我这里就不讲了。如果你对abp不太了解请先去 Abp官网 了解或者参考我的学习之路里面...
  • t91zzh5f
  • t91zzh5f
  • 2017-02-19 09:32
  • 3551

ABP官方文档(七)【依赖注入】

2.1 ABP公共结构 - 依赖注入如果你已经了解依赖注入的概念、构造函数和属性注入模式,你可以跳过这一节。维基百科:“依赖注入是一种软件设计模式,指一个或多个依赖(或服务)被注入,或通过引用传递,传入一个依赖对象(或客户端)并成为客户状态的一部分。模式通过自身的行为分离了客户依赖的创建,这允许程序...
  • WuLex
  • WuLex
  • 2017-11-01 14:04
  • 445

Dapper功能讲解

Dapper功能讲解 简述 适用特性 使用Dapper流程 代码示例 简述 Dapper是一个轻量级的ORM工具:ORM框架的核心思想是对象关系映射,ORM是将表与表之间的操作,映射成对象和对象之间的操作,就是通过操作实体类来达到操作表的目的。从数据库提取的数据会自动按你设置的映射要求封装成特定...
  • laokang426
  • laokang426
  • 2017-09-07 18:25
  • 426

Dapper结合Repository模式的应用

Dapper结合Repository模式的应用,包括如何在数据访问层(DAL)使用Dapper组件。 Dapper在真实项目中使用,扩展IDbConnection的功能,支持Oracle、MS SQL Server 2005数据库 1)定义统一的IDbConnection访问入口  ...
  • dacong
  • dacong
  • 2012-02-27 21:53
  • 8741

Dapper.NET使用入门(一)【LINQ2Dapper】

此例子是使用LINQ2Dapper封装Model实体类 public class DataType { public int DataTypeId { get; set; } public string Name { get; set; } pub...
  • WuLex
  • WuLex
  • 2016-09-08 17:00
  • 4150

Stackoverflow/dapper的Dapper-Extensions用法(一)

Stackoverflow/dapper的Dapper-Extensions
  • rise51
  • rise51
  • 2017-05-09 11:58
  • 977

ABP官方文档(二十)【领域事件】

3.6 ABP领域层 - 领域事件在C#中,一个类可以定义其专属的事件并且其它类可以注册该事件并监听,当事件被触发时可以获得事件通知。这对于对于桌面应用程序或独立的Windows Service来说非常有用。但是, 对于Web应用程序来说会有点问题,因为对象是根据请求(request)被创建并且它们...
  • WuLex
  • WuLex
  • 2017-11-02 10:25
  • 338

abp及实战框架概述

接触abp也快一年了,有过大半年的abp项目开发经验,目前项目中所用的abp框架版本为0.10.3,最新的abp框架已经到了1.4,并且支持了asp.net core。关于abp框架有哪些特性、有什么好处我这里就不讲了。如果你对abp不太了解请先去 Abp官网 了解或者参考我的学习之路里面...
  • c6sikue0
  • c6sikue0
  • 2017-02-18 10:28
  • 475

ABP官方文档(五十三)【集成Dapper】

9.2 ABP基础设施层 - 集成Dapper9.2.1 简介Dapper 是基于.NET的一种对象关系映射工具。Abp.Dapper简单的将Dapper集成到ABP。它作为第二个ORM可以与EF 6.x, EF Core 或者 Nhibernate 工作。9.2.2 安装在开始之前,你需要安装Ab...
  • WuLex
  • WuLex
  • 2017-11-06 10:14
  • 890

dapper-fastcrud

用fastcrud执行选取所有特定条件元素时遭遇锁表; 究其原因,因为另一个程序在更新表字段,而此选取指令为事务型。
  • Henry_Wu001
  • Henry_Wu001
  • 2017-08-08 08:36
  • 310
    个人资料
    • 访问:1297997次
    • 积分:18625
    • 等级:
    • 排名:第591名
    • 原创:312篇
    • 转载:932篇
    • 译文:123篇
    • 评论:297条
    博客专栏
    文章分类
    打赏
    如果你觉得我的文章对您有用,请随意打赏。 微信 支付宝