Basic usage of dapperextensions

Source: Internet
Author: User
Tags bulk insert

Introduction to the basic syntax for using dapper-extensions

Entity class
demoentity entity = new demoentity ();

Delete based on entity primary key
This. Delete<demoentity> (entity);

Delete based on primary key ID
This. Delete<demoentity> (1);

Increase
This. Insert<demoentity> (entity);

Update
BOOL result = this. Update<demoentity> (entity);

Return entities based on primary key
entity = this. Getbyid<demoentity> (1);

Number of rows returned
This. Count<demoentity> (New {ID = 1});

Query all
ienumerable<demoentity> list = this. Getall<demoentity> ();

ilist<isort> sort = new list<isort> ();
Sort. ADD (new Sort {propertyname = "ID", ascending = false});


Conditional query
List = this. Getlist<demoentity> (New {ID = 1, Name = "123"}, sort);

ORM Stitching Condition Query
ilist<ipredicate> predlist = new list<ipredicate> ();
Predlist.add (predicates.field<demoentity> (p = p.name, operator.like, "Do not know%"));
Predlist.add (predicates.field<demoentity> (p = p.id, Operator.eq, 1));
Ipredicategroup Predgroup = Predicates.group (Groupoperator.and, Predlist.toarray ());

List = this. Getlist<demoentity> (Predgroup);


Paging Query
Long Allrowscount = 0;
This. Getpagelist<demoentity> (1, N, out Allrowscount, new {ID = 1}, sort);

RepositoryServiceBase.cs (Implementation class for Idataservicerepository)

Using System.Collections.Generic;
Using System.Data;
Using System.Linq;
Using Dapper;
Using Dapperextensions;
Using HY. DataAccess;

Namespace HY. Orm
{
public class Repositoryservicebase:idataservicerepository
{
Public Repositoryservicebase ()
{
}
Public Repositoryservicebase (Idbsession dbsession)
{
Dbsession = dbsession;
}


Public idbsession dbsession {get; private set;}

public void Setdbsession (Idbsession dbsession)
{
Dbsession = dbsession;
}


<summary>
Get entities by ID
</summary>
<typeparam name= "T" ></typeparam>
<param name= "Primaryid" ></param>
<returns></returns>
Public T getbyid<t> (Dynamic Primaryid) where T:class
{
Return dbsession.connection.get<t> (Primaryid as Object, DatabaseType:DBSession.DatabaseType);
}

<summary>
Get multiple entities based on multiple IDs
</summary>
<typeparam name= "T" ></typeparam>
<param name= "IDs" ></param>
<returns></returns>
Public ienumerable<t> getbyids<t> (ilist<dynamic> ids) where T:class
{
var tblname = string. Format ("dbo.{ 0} ", typeof (T). Name);
var idsin = string. Join (",", IDs. Toarray<dynamic> ());
var sql = "Select * from @table WHERE Id in (@ids)";
ienumerable<t> dataList = dbsession.connection.query<t> (sql, new {table = tblname, ids = Idsin});
return dataList;
}

<summary>
Get All data collection
</summary>
<typeparam name= "T" ></typeparam>
<returns></returns>
Public ienumerable<t> getall<t> () where T:class
{
Return dbsession.connection.getlist<t> (DatabaseType:DBSession.DatabaseType);
}


//<summary>
//Statistics total
//</summary>
//<typeparam name= "T" ></typeparam
//<param name= "predicate" ></PARAM>
//<param name= "buffered" ></PARAM>
// <RETURNS></RETURNS>
public int count<t> (object predicate, bool buffered = false) where T:class
{
Return dbsession.connection.count<t> (predicate, databaseType:DBSession.DatabaseType);
}

<summary>
Querying list data
</summary>
<typeparam name= "T" ></typeparam>
<param name= "predicate" ></param>
<param name= "Sort" ></param>
<param name= "Buffered" ></param>
<returns></returns>
Public ienumerable<t> getlist<t> (object predicate = null, ilist<isort> sort = null,
BOOL buffered = false) where T:class
{
return dbsession.connection.getlist<t> (predicate, sort, null, NULL, buffered, DatabaseType: Dbsession.databasetype);
}


<summary>
Page out
</summary>
<typeparam name= "T" ></typeparam>
<param name= "PageIndex" ></param>
<param name= "PageSize" ></param>
<param name= "Allrowscount" ></param>
<param name= "predicate" ></param>
<param name= "Sort" ></param>
<param name= "Buffered" ></param>
<returns></returns>
Public ienumerable<t> getpagelist<t> (int pageIndex, int. pageSize, out Long Allrowscount,
Object predicate = null, ilist<isort> sort = NULL, bool buffered = true) where T:class
{
if (sort = null)
{
sort = new list<isort> ();
}
ienumerable<t> entitylist = dbsession.connection.getpage<t> (predicate, sort, pageIndex, pageSize, NULL, NULL, buffered, databaseType:DBSession.DatabaseType);
Allrowscount = dbsession.connection.count<t> (predicate, databaseType:DBSession.DatabaseType);
return entitylist;
}


<summary>
Insert a single record
</summary>
<typeparam name= "T" ></typeparam>
<param name= "entity" ></param>
<param name= "Transaction" ></param>
<returns></returns>
Public dynamic insert<t> (T entity, idbtransaction transaction = null) where T:class
{
Dynamic result = dbsession.connection.insert<t> (entity, transaction, DatabaseType:DBSession.DatabaseType);
return result;
}

//<summary>
//Update a single record
//</summary>
//<typeparam name= "T" ></typeparam>
//<param name= "entity" ></PARAM>
//<param name= "Transaction" ></PARAM>
//< RETURNS></RETURNS>
public bool Update<t> (T entity, idbtransaction transaction = null) where t:class {
bool isOk = dbsession.connection.update<t> (entity, transaction, DatabaseType:DBSession.DatabaseType);
return isOk;
}

//<summary>
//delete a single record
//</summary>
//<typeparam name= "T" ></typeparam>
//<param name= "Primaryid" ></PARAM>
//<param name= "Transaction" ></PARAM>
// <RETURNS></RETURNS>
public int delete<t> (dynamic Primaryid, idbtransaction transaction = null) where T:class
{
var entity = getbyid<t> (Primaryid);
var obj = entity as T;
int isOk = dbsession.co Nnection. Delete<t> (obj, databaseType:DBSession.DatabaseType);
return isOk;
}

//<summary>
//delete a single record
//</summary>
//<typeparam name= "T" ></typeparam>
//<param name= "predicate" ></PARAM>
//<param name= "Transaction" ></PARAM>
// <returns></returns>
Public int deletelist<t> (object predicate = NULL, idbtransaction transaction = null) where T:class
{
return dbsession.connection.delete<t> (predicate, transaction, databasetype:dbses Sion. DatabaseType);
}

//<summary>
//BULK Insert Function
//</SUMMARY>
//<typeparam name= "T" ></typeparam>
//<param name= "Entitylist" ></PARAM>
//<param name= "Transaction" ></PARAM>
public bool Insertbatch<t> (ienumerable<t> entitylist, idbtransaction transaction = null) where T:class
{
bool isOk = false;
foreach (var item in entitylist)
{
Insert<t> (item, transaction);
}
IsOk = true;
return isOk;
}

//<summary>
//Bulk update ()
//</summary>
//<typeparam name= "T" ></typeparam>
//<param name= "Entitylist" ></PARAM>
//<param name= "Transaction" ></PARAM>
// <RETURNS></RETURNS>
public bool Updatebatch<t> (ienumerable<t> entitylist, IDbTransaction transaction = null) where T:class
{
bool isOk = false;
foreach (var item in entitylist)
{
update<t> (item, transaction);
}
IsOk = true;
return isOk;
}

<summary>
Bulk Delete
</summary>
<typeparam name= "T" ></typeparam>
<param name= "IDs" ></param>
<param name= "Transaction" ></param>
<returns></returns>
public bool Deletebatch<t> (ienumerable<dynamic> IDs, idbtransaction transaction = null) where T:class
{
BOOL IsOk = false;
foreach (var id in IDs)
{
Delete<t> (ID, transaction);
}
IsOk = true;
return isOk;
}

}
}

Using System;
Using System.Collections.Generic;
Using System.Data;
Using Dapper;
Using Dapperextensions;
Using HY. DataAccess;

Namespace HY. Orm
{
<summary>
Repository base class
</summary>
public class Repositorybase:repositoryservicebase, idatarepository
{


Public Repositorybase ()
{
}

Public new void Setdbsession (Idbsession dbsession)
{
Base. Setdbsession (dbsession);
}


Public Repositorybase (Idbsession dbsession)
: Base (Dbsession)
{
}

<summary>
Filter out data collections based on criteria
</summary>
<typeparam name= "T" ></typeparam>
<param name= "SQL" ></param>
<param name= "param" ></param>
<param name= "Buffered" ></param>
<returns></returns>
Public ienumerable<t> get<t> (String sql, dynamic param = NULL, bool buffered = true) where T:class
{

return dbsession.connection.query<t> (SQL, Param as object, dbsession.transaction, buffered);
}

<summary>
Filter data collections based on criteria
</summary>
<param name= "SQL" ></param>
<param name= "param" ></param>
<param name= "Buffered" ></param>
<returns></returns>
Public ienumerable<dynamic> Get (String sql, dynamic param = NULL, bool buffered = TRUE)
{
return DBSession.Connection.Query (SQL, Param as object, dbsession.transaction, buffered);
}

<summary>
Paging Query
</summary>
<typeparam name= "T" ></typeparam>
<param name= "PageIndex" ></param>
<param name= "PageSize" ></param>
<param name= "Allrowscount" ></param>
<param name= "SQL" ></param>
<param name= "param" ></param>
<param name= "Allrowscountsql" ></param>
<param name= "Allrowscountparam" ></param>
<param name= "Buffered" ></param>
<returns></returns>
Public ienumerable<t> getpage<t> (int pageIndex, int. pageSize, Out long allrowscount, string sql, dynamic param = NULL, string allrowscountsql = null, dynamic Allrowscountparam = NULL, BOOL buffered = true) where T:class
{
ienumerable<t> entitylist = dbsession.connection.getpage<t> (PageIndex, pageSize, out Allrowscount, SQL, Param as Object, allrowscountsql, NULL, NULL, buffered, databaseType:DBSession.DatabaseType);
return entitylist;
}

<summary>
Filter by an expression
</summary>
<typeparam name= "TFirst" ></typeparam>
<typeparam name= "Tsecond" ></typeparam>
<typeparam name= "Treturn" ></typeparam>
<param name= "SQL" ></param>
<param name= "Map" ></param>
<param name= "param" ></param>
<param name= "Transaction" ></param>
<param name= "Buffered" ></param>
<param name= "SplitOn" ></param>
<param name= "CommandTimeout" ></param>
<returns></returns>
Public ienumerable<treturn> Get<tfirst, Tsecond, treturn> (String sql, Func<tfirst, Tsecond, TReturn> Map
Dynamic param = NULL, idbtransaction transaction = NULL, BOOL buffered = True, string splitOn = "Id",
Int? CommandTimeout = null)
{
return DBSession.Connection.Query (SQL, map, param as Object, transaction, buffered, SplitOn);
}

<summary>
Filter by an expression
</summary>
<typeparam name= "TFirst" ></typeparam>
<typeparam name= "Tsecond" ></typeparam>
<typeparam name= "Treturn" ></typeparam>
<param name= "SQL" ></param>
<param name= "Map" ></param>
<param name= "param" ></param>
<param name= "Transaction" ></param>
<param name= "Buffered" ></param>
<param name= "SplitOn" ></param>
<param name= "CommandTimeout" ></param>
<returns></returns>
Public ienumerable<treturn> Get<tfirst, Tsecond, Tthird, treturn> (String sql, Func<tfirst, TSecond, Tthird, treturn> Map,
Dynamic param = NULL, idbtransaction transaction = NULL, BOOL buffered = True, string splitOn = "Id",
Int? CommandTimeout = null)
{
return DBSession.Connection.Query (SQL, map, param as Object, transaction, buffered, SplitOn);
}

<summary>
Get a multi-entity collection
</summary>
<param name= "SQL" ></param>
<param name= "param" ></param>
<param name= "Transaction" ></param>
<param name= "CommandTimeout" ></param>
<param name= "CommandType" ></param>
<returns></returns>
Public sqlmapper.gridreader getmultiple (String sql, dynamic param = null, idbtransaction transaction = NULL,
Int? CommandTimeout = null, commandtype? CommandType = null)
{
return DBSession.Connection.QueryMultiple (SQL, Param as object, transaction, CommandTimeout, CommandType);
}

<summary>
Execute SQL operation
</summary>
<param name= "SQL" ></param>
<param name= "param" ></param>
<returns></returns>
public int Execute (String sql, dynamic param = null, idbtransaction transaction = null)
{
return DBSession.Connection.Execute (SQL, Param as object, transaction);
}


}
}

Basic usage of dapperextensions

Related Article

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.