Skip to content

MrDustpan/command-query-dapper

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 

Repository files navigation

##Command/Query Objects with Dapper

A simple framework for using command/query objects to perform data access. The only dependency is on the System.Data.IDbConnection interface, so it works well with dapper-dot-net.

####Sample Usage

public class FetchUserByEmailQuery : IQuery<User>
{
    private readonly string email;

    public FetchUserByEmailQuery(string email)
    {
        this.email = email;
    }

    public User Execute(IDbConnection db)
    {
        return db.Query<User>("select * from [User] where [Email] = @email", new { email }).FirstOrDefault();
    }
}

public class CreateUserCommand : ICommand
{
    private readonly User user;

    public CreateUserCommand(User user)
    {
        this.user = user;
    }

    public void Execute(IDbConnection db)
    {
        db.Execute("insert into [User] ([Email]) values (@Email)", user);
    }
}

public class UserController
{
    private readonly IDatabase db;

    public UserController(IDatabase db)
    {
        this.db = db;
    }

    public void Create(string email)
    {
        // See if the user exists
        var user = db.Execute(new FetchUserByEmailQuery(email));

        if (user == null)
        {
            // If not, create it
            user = new User { Email = email };
            db.Execute(new CreateUserCommand(user));
        }
    }
}

About

A simple command/query framework for data access.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages