DataAccess

Author: Victor.X.Qu

Email: fs7744@hotmail.com

DataAccess is a c# project for sql data mapping to object, like dapper

DataAccess is for net core , so it base on netstandard1.3

db supports

DataAccess base on ado.net, so you can use blow db :

use MSSql example

Use config file

dependencies
  "dependencies": {
"VIC.DataAccess.MSSql": "1.0.1",
"VIC.DataAccess.Config": "1.0.1"
},

You can config sql in xml file for DataAcces, like:

<?xml version="1.0" encoding="utf-8"?>
<DbConfig xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<ConnectionStrings>
<DataConnection Name="Test" ConnectionString="Data Source=(localdb)\MSSQLLocalDB;Initial Catalog=TestDataAccess;Integrated Security=True;Connect Timeout=30;Encrypt=False;TrustServerCertificate=True;ApplicationIntent=ReadWrite;MultiSubnetFailover=False" />
</ConnectionStrings>
<SqlConfigs>
<DbSql CommandName="SelectByName" Type="Text" ConnectionName="Test">
<Text>
<![CDATA[
SELECT top 1
Id
,Age
,Name
,JoinDate
,[Money]
FROM [dbo].[Students] WITH(NOLOCK)
WHERE @Name = Name
]]>
</Text>
<PreParameters>
<Parameter Name="@Name" Direction="Input" Type="AnsiString" />
</PreParameters>
</DbSql>
<DbSql CommandName="SelectAll" Type="Text" ConnectionName="Test">
<Text>
<![CDATA[
SELECT
Id
,Age
,Name
,JoinDate
,[Money]
FROM [dbo].[Students] WITH(NOLOCK)
]]>
</Text>
</DbSql>
<DbSql CommandName="SelectAllAge" Type="Text" ConnectionName="Test">
<Text>
<![CDATA[
SELECT
sum(Age) as Age
FROM [dbo].[Students] WITH(NOLOCK)
]]>
</Text>
</DbSql>
<DbSql CommandName="Clear" Type="Text" ConnectionName="Test">
<Text>
<![CDATA[
delete from [dbo].[Students]
]]>
</Text>
</DbSql>
<DbSql CommandName="BulkCopy" Type="Text" ConnectionName="Test">
<Text>
<![CDATA[
[dbo].[Students]
]]>
</Text>
</DbSql>
</SqlConfigs>
</DbConfig>

Code for use :

var provider = new ServiceCollection()
.UseDataAccess()
.UseDataAccessConfig(Directory.GetCurrentDirectory(), false, "db.xml")
.BuildServiceProvider(); List<Student> students = GenerateStudents(count); var db = provider.GetService<IDbManager>(); var command = db.GetCommand("BulkCopy");
await command.ExecuteBulkCopyAsync(students); var command = db.GetCommand("SelectByName");
Student s = await command.ExecuteEntityAsync<Student>(new { Name = "3" }); var command = db.GetCommand("SelectAll");
List<Student> students = await command.ExecuteEntityListAsync<Student>(); var command = db.GetCommand("SelectAllAge");
int? age = await command.ExecuteScalarAsync<int?>();

No config file

dependencies
  "dependencies": {
"VIC.DataAccess.MSSql": "1.0.1"
},
var provider = new ServiceCollection()
.UseDataAccess()
.BuildServiceProvider(); var command = provider.GetService<IDataCommand>();
command.ConnectionString = "sqlConnectionString";
command.Text = "sql";
command.Type = CommandType.Text;
Student s = await command.ExecuteEntityAsync<Student>(new { Name = "3" });

Test performance

You can see the simple code in https://github.com/fs7744/DataAccess/blob/master/example/MSSqlExample

All package

又一个类dapper轮子:VIC.DataAccess的更多相关文章

  1. 一个类GraphQL的ORM数据访问框架发布

    Zongsoft.Data 发布公告 很高兴我们的 ORM 数据访问框架(Zongsoft.Data)在历经两个 SaaS 产品的应用之后,今天正式宣布对外推广! 这是一个类 GraphQL 风格的  ...

  2. RPC基础以及造一个RPC的轮子需要注意些什么

    RPC基础以及造一个RPC的轮子需要注意些什么 前言 rpc即远程过程调用,是分布式系统常用的通信方法.远程可以是在一台机器上的不同进程或在不同一个机器上的不同进程.rpc更看重速度,像调用本地方法一 ...

  3. java进阶之反射:反射基础之如何获取一个类以及如何获取这个类的所有属性和方法(2)

    当我们知道一个类的对象,或者知道一个类的路径,或者指导这个类的名称的时候我们可以获取到这个类的类对象 当我们仅仅知道一个类的类对象的时候我们依然无法操作这个类,因为我们不知道这个类的属性,类的方法.那 ...

  4. Java中是否可以调用一个类中的main方法?

    前几天面试的时候,被问到在Java中是否可以调用一个类中的main方法?回来测试了下,答案是可以!代码如下: main1中调用main2的主方法 package org.fiu.test; impor ...

  5. [转]自己写PHP扩展之创建一个类

    原文:http://www.imsiren.com/archives/572 比如我们要创建一个类..PHP代码如下 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 ...

  6. 重写toString()方法来描述一个类

    package com.zch.test; /* toString方法以及重写toString方法 toString方法是一个自我描述方法 方法本身返回的是该对象的实现类的 类名 + @ + hash ...

  7. Java中的一个类怎么调用另一个类中的方法

    如果另一个类中的那个方法是私有的话,就不能直接调用到,如果是其他类型的话看情况,如果是静态的(static)话,直接用类名可以调用到,如果是非静态的,就需要利用另一个类的实例(也就是用那个类生成的对象 ...

  8. 22.编写一个类A,该类创建的对象可以调用方法showA输出小写的英文字母表。然后再编写一个A类的子类B,子类B创建的对象不仅可以调用方法showA输出小写的英文字母表,而且可以调用子类新增的方法showB输出大写的英文字母表。最后编写主类C,在主类的main方法 中测试类A与类B。

    22.编写一个类A,该类创建的对象可以调用方法showA输出小写的英文字母表.然后再编写一个A类的子类B,子类B创建的对象不仅可以调用方法showA输出小写的英文字母表,而且可以调用子类新增的方法sh ...

  9. 35.按要求编写Java程序: (1)编写一个接口:InterfaceA,只含有一个方法int method(int n); (2)编写一个类:ClassA来实现接口InterfaceA,实现int method(int n)接口方 法时,要求计算1到n的和; (3)编写另一个类:ClassB来实现接口InterfaceA,实现int method(int n)接口 方法时,要求计算n的阶乘(n

      35.按要求编写Java程序: (1)编写一个接口:InterfaceA,只含有一个方法int method(int n): (2)编写一个类:ClassA来实现接口InterfaceA,实现in ...

随机推荐

  1. mode(思维,注意内存)

    mode Time Limit:1000MS     Memory Limit:1024KB     64bit IO Format:%lld & %llu Submit Status Pra ...

  2. 什么是OAuth

    什么是OAuth 如今很多网站的功能都强调彼此间的交互,因此我们需要一种简单,标准的解决方案来安全的完成应用的授权,于是,OAuth应运而生,看看官网对其的定义: An open protocol t ...

  3. android同时使用多个library时的问题

    剧情是这样,我的app要使用四个library,如:LibraryA,LibraryB.这两个库又都需要support.v4.jar. 由于加载的时间不同,所以四个support.v4.jar不同,出 ...

  4. golang基础数据结构

    一.概述: 这里主要讨论四种类型---数组.slice.map和结构体 数组和结构体是聚合类型:它们的值都是由很多个元素或者成员字段的值组成.数组是有同构元素组成--每个数组的元素的类型相同:结构体为 ...

  5. CSS备忘-1

    CSS 可以通过以下方式添加到HTML中: 内联样式- 在HTML元素中使用"style" 属性 内部样式表 -在HTML文档头部 <head> 区域使用<sty ...

  6. 《JavaScript 闯关记》之简介

    简介 JavaScript 是面向 Web 的编程语言,绝大多数现代网站都使用了 JavaScript,并且所有的现代 Web 浏览器(电脑,手机,平板)均包含了 JavaScript 解释器. 这使 ...

  7. IE6、7下获得offset值跟其他浏览器不一样问题

    大家都知道,offset是元素的位置坐标,那位置坐标又和文档流有关系.如果position默认不设置的话,其值是static.static是个什么东东呢?下面我详细介绍一下: 语法: position ...

  8. C# MVC分页,razor,view传送model

    IMVCPages interface IMVCPages { int GetItemsCount(); int GetPageSize(); int GetPagesCount(); /// < ...

  9. Netty详解

    Netty详解  http://blog.csdn.net/suifeng3051/article/category/2161821

  10. MySql中游标使用总是多循环一次的解决方法

    CREATE DEFINER = 'root'@'%' PROCEDURE deyestest.procedure2() BEGIN DECLARE v_id INT; DECLARE v_userN ...