FluentCommand 9.0.522
See the version list below for details.
dotnet add package FluentCommand --version 9.0.522
NuGet\Install-Package FluentCommand -Version 9.0.522
<PackageReference Include="FluentCommand" Version="9.0.522" />
<PackageVersion Include="FluentCommand" Version="9.0.522" />
<PackageReference Include="FluentCommand" />
paket add FluentCommand --version 9.0.522
#r "nuget: FluentCommand, 9.0.522"
#:package FluentCommand@9.0.522
#addin nuget:?package=FluentCommand&version=9.0.522
#tool nuget:?package=FluentCommand&version=9.0.522
FluentCommand
Fluent Wrapper for DbCommand.
| Package | Version |
|---|---|
| FluentCommand | |
| FluentCommand.Dapper | |
| FluentCommand.SqlServer |
Download
The FluentCommand library is available on nuget.org via package name FluentCommand.
To install FluentCommand, run the following command in the Package Manager Console
PM> Install-Package FluentCommand
More information about NuGet package avaliable at https://nuget.org/packages/FluentCommand
Development Builds
Development builds are available on the myget.org feed. A development build is promoted to the main NuGet feed when it's determined to be stable.
In your Package Manager settings add the following package source for development builds: http://www.myget.org/F/loresoft/
Features
- Fluent wrapper over DbConnection and DbCommand
- Callback for parameter return values
- Automatic handling of connection state
- Caching of results
- Automatic creating of entity from DataReader via Dapper
- Create Dynamic objects from DataReader via Dapper
- Handles multiple result sets
Configuration
Configuration for SQL Server
IDataConfiguration dataConfiguration = new DataConfiguration(
SqlClientFactory.Instance,
ConnectionString
);
Example
Query all users with email domain. Entity is automaticly created from DataReader.
string email = "%@battlestar.com";
string sql = "select * from [User] where EmailAddress like @EmailAddress";
var session = configuration.CreateSession();
var user = await session
.Sql(sql)
.Parameter("@EmailAddress", email)
.QuerySingleAsync(r => new User
{
Id = r.GetGuid("Id"),
EmailAddress = r.GetString("EmailAddress"),
IsEmailAddressConfirmed = r.GetBoolean("IsEmailAddressConfirmed"),
DisplayName = r.GetString("DisplayName"),
PasswordHash = r.GetString("PasswordHash"),
ResetHash = r.GetString("ResetHash"),
InviteHash = r.GetString("InviteHash"),
AccessFailedCount = r.GetInt32("AccessFailedCount"),
LockoutEnabled = r.GetBoolean("LockoutEnabled"),
LockoutEnd = r.GetDateTimeOffsetNull("LockoutEnd"),
LastLogin = r.GetDateTimeOffsetNull("LastLogin"),
IsDeleted = r.GetBoolean("IsDeleted"),
Created = r.GetDateTimeOffset("Created"),
CreatedBy = r.GetString("CreatedBy"),
Updated = r.GetDateTimeOffset("Updated"),
UpdatedBy = r.GetString("UpdatedBy"),
RowVersion = r.GetBytes("RowVersion"),
});
Execute a stored procedure with out parameters
Guid userId = Guid.Empty;
int errorCode = -1;
var username = "test." + DateTime.Now.Ticks;
var email = username + "@email.com";
var session = configuration.CreateSession();
var result = session
.StoredProcedure("[dbo].[aspnet_Membership_CreateUser]")
.Parameter("@ApplicationName", "/")
.Parameter("@UserName", username)
.Parameter("@Password", "T@est" + DateTime.Now.Ticks)
.Parameter("@Email", email)
.Parameter("@PasswordSalt", "test salt")
.Parameter<string>("@PasswordQuestion", null)
.Parameter<string>("@PasswordAnswer", null)
.Parameter("@IsApproved", true)
.Parameter("@CurrentTimeUtc", DateTime.UtcNow)
.Parameter("@UniqueEmail", 1)
.Parameter("@PasswordFormat", 1)
.ParameterOut<Guid>("@UserId", p => userId = p)
.Return<int>(p => errorCode = p)
.Execute();
Query for user by email address. Also return Role and Status entities.
string email = "kara.thrace@battlestar.com";
string sql = "select * from [User] where EmailAddress = @EmailAddress; " +
"select * from [Status]; " +
"select * from [Priority]; ";
User user = null;
List<Status> status = null;
List<Priority> priorities = null;
var session = configuration.CreateSession();
session
.Sql(sql)
.Parameter("@EmailAddress", email)
.QueryMultiple(q =>
{
user = q.QuerySingle<User>();
status = q.Query<Status>().ToList();
priorities = q.Query<Priority>().ToList();
});
Dapper
PM> Install-Package FluentCommand.Dapper
Use Dapper to materialize data reader to entities
string email = "kara.thrace@battlestar.com";
string sql = "select * from [User] where EmailAddress = @EmailAddress";
var session = configuration.CreateSession();
var user = await session
.Sql(sql)
.Parameter("@EmailAddress", email)
.QuerySingleAsync<User>();
Query Builder
Build SQL statements with the query builder. Query builder uses the DataAnnotations Schema attributes to extract table and column information.
var session = configuration.CreateSession();
string email = "kara.thrace@battlestar.com";
var user = await session
.Sql(builder => builder
.Select<User>() // table name comes from type
.Where(p => p.EmailAddress, email)
)
.QuerySingleAsync();
Count query
string email = "kara.thrace@battlestar.com";
var count = await session
.Sql(builder => builder
.Select<User>()
.Count()
.Where(p => p.EmailAddress, email)
)
.QueryValueAsync<int>();
Insert statement
var id = Guid.NewGuid();
var userId = await session
.Sql(builder => builder
.Insert<User>()
.Value(p => p.Id, id)
.Value(p => p.EmailAddress, $"{id}@email.com")
.Value(p => p.DisplayName, "Last, First")
.Value(p => p.FirstName, "First")
.Value(p => p.LastName, "Last")
.Output(p => p.Id) // return key as output value
.Tag() // add comment tag to querey
)
.QueryValueAsync<Guid>();
Update statement
var updateId = await session
.Sql(builder => builder
.Update<User>()
.Value(p => p.DisplayName, "Updated Name")
.Output(p => p.Id)
.Where(p => p.Id, id)
.Tag()
)
.QueryValueAsync<Guid>();
Delete statement
var deleteId = await session
.Sql(builder => builder
.Delete<User>()
.Output(p => p.Id)
.Where(p => p.Id, id)
.Tag()
)
.QueryValueAsync<Guid>();
SQL Server Features
PM> Install-Package FluentCommand.SqlServer
Bulk Copy
Using SQL Server bulk copy feature to import a lot of data.
using (var session = configuration.CreateSession())
{
session.BulkCopy("[User]")
.AutoMap()
.Ignore("RowVersion")
.WriteToServer(users);
}
Merge Data
Generate and merge data into a table
var users = generator.List<UserImport>(100);
int rows;
using (var session = configuration.CreateSession())
{
rows = session
.MergeData("dbo.User")
.Map<UserImport>(m => m
.AutoMap()
.Column(p => p.EmailAddress).Key()
)
.Execute(users);
}
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net5.0 was computed. net5.0-windows was computed. net6.0 is compatible. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
| .NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
| .NET Standard | netstandard2.0 is compatible. netstandard2.1 was computed. |
| .NET Framework | net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
| MonoAndroid | monoandroid was computed. |
| MonoMac | monomac was computed. |
| MonoTouch | monotouch was computed. |
| Tizen | tizen40 was computed. tizen60 was computed. |
| Xamarin.iOS | xamarinios was computed. |
| Xamarin.Mac | xamarinmac was computed. |
| Xamarin.TVOS | xamarintvos was computed. |
| Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETStandard 2.0
- System.ComponentModel.Annotations (>= 5.0.0)
-
net6.0
- System.ComponentModel.Annotations (>= 5.0.0)
NuGet packages (7)
Showing the top 5 NuGet packages that depend on FluentCommand:
| Package | Downloads |
|---|---|
|
FluentCommand.SqlServer
Fluent Wrapper for DbCommand with SQL Server support using Microsoft.Data.SqlClient |
|
|
FluentCommand.EntityFactory
Fluent Wrapper for DbCommand |
|
|
FluentCommand.Batch
Fluent Wrapper for DbCommand |
|
|
FluentCommand.Json
Fluent Wrapper for DbCommand with JSON export support for query results |
|
|
FluentCommand.Dapper
Fluent Wrapper for DbCommand |
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 14.2.0 | 925 | 12/10/2025 |
| 14.1.0 | 341 | 12/5/2025 |
| 14.0.0 | 1,021 | 11/12/2025 |
| 13.4.1 | 1,742 | 10/15/2025 |
| 13.4.0 | 998 | 9/8/2025 |
| 13.3.3 | 1,226 | 7/16/2025 |
| 13.3.1 | 327 | 7/15/2025 |
| 13.3.0 | 328 | 7/13/2025 |
| 13.2.1 | 459 | 6/17/2025 |
| 13.2.0 | 500 | 6/14/2025 |
| 13.1.0 | 4,994 | 2/16/2025 |
| 13.0.0 | 1,599 | 11/13/2024 |
| 12.13.2 | 714 | 9/21/2024 |
| 12.13.1 | 420 | 9/19/2024 |
| 12.13.0 | 464 | 9/16/2024 |
| 12.12.0 | 539 | 9/7/2024 |
| 12.11.0 | 1,249 | 8/9/2024 |
| 12.10.8 | 468 | 8/8/2024 |
| 12.10.7 | 692 | 7/17/2024 |
| 9.0.522 | 1,950 | 9/30/2022 |