SkillAgentSearch skills...

DapperLike

SqlBulkCopy wrapper with Dapper-like API

Install / Use

/learn @sergeykonkin/DapperLike
About this skill

Quality Score

0/100

Supported Platforms

Universal

README

SqlBulkCopy wrapper with Dapper-like API

Build status NuGet

This library wraps SqlBulkCopy class with Dapper-like API. It provides extension methods for IDbConnection (just like Dapper do), but will only work for SqlConnection (for obvious reasons).

Usage Example

Table

CREATE TABLE [User] (
    Id int PRIMARY KEY IDENTITY,
    FirstName nvarchar(250),
    LastName nvarchar(250),
    Age int,
    Gender bit
)

POCO

public class User
{
    public int Id { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public int Age { get; set; }
    public bool Gender { get; set; }
}  

Code

IEnumerable<User> users = GetUsers();
connection.BulkInsert(users);

All properties will be automatically mapped to table columns as well as the type name will be mapped to table name.

Let's check:

// Using Dapper to Query users:
IEnumerable<User> inserted = connection.Query<User>("SELECT * FROM [User]");

// Assert
Assert.IsTrue(users.SequenceEqual(inserted, new UserComparer())); // true

Simple data to single column

List<byte[]> blobs = GetBinaryData();
connection.BulkInsert(blobs, tableName: "dbo.Data", columnName: "Blob");

Table and column names must be specified explicitly since they cannot be inferred from type/prop names.

Anonymous types

IEnumerable<DomainObject> domainObjects = GetData();
var dto = domainObjects
    .Select(obj => new
    {
        Foo = obj.Prop1,
        Bar = obj.Prop2.Normalize(),
        Baz = ConvertToBaz(obj.Prop3)
    });
    
connection.BulkInsert(dto, tableName: "FooBar");

Column names can be inferred from anonymous type props, but table name from type name cannot, so again it must be specified explicitly.

View on GitHub
GitHub Stars19
CategoryData
Updated7mo ago
Forks4

Languages

C#

Security Score

82/100

Audited on Aug 13, 2025

No findings