A template engine for writing dynamic sql:
sdmap has it's own benifics over other dynamic SQL package/framework (like iBatis.NET):
- Very simple Domain-Specific-Language(or DSL) to enhance the dynamic SQL expression
- Implemented by Common-Intermediate-Language(or CIL) to ensure the performance
- Visual Studio integrated, with code-highlight, code-folding and navigate-to features supported
- Support all majoy databases like MySQL, SQL Server, SQLite (whenever Dapper supports :))
- Even is able to extend to databases that is not relational, like Neo4j
- Fully unit test covered.
- https://www.nuget.org/packages/sdmap
- https://www.nuget.org/packages/sdmap.ext
- https://www.nuget.org/packages/sdmap.ext.Dapper
- Install package:
sdmap.ext.Dapper
You can just only install sdmap.ext.Dapper
since it will automatically install all dependencies including sdmap
and sdmap.ext
.
- Create a empty text file, and renames it into .sdmap
- Set the file "Build operation" from "None" to "Embedded Resource" in item Property Window.
- Write some SQL statements into sdmap file, a minimum sdmap file may looks as following:
sql GetUserById
{
SELECT * FROM [User] WHERE Id = @Id
}
Note: the namespace NS { ... }
is not required.
- Initialize sdmap by this code(the
Program
means the assembly where sdmap be located):
DbConnectionExtensions.SetEmbeddedSqlAssembly(typeof(Program).Assembly);
Note:
- This code MUST be running before any database operations.
- This code ONLY need to execute ONCE per process.
- There are many other ways to initialize sdmap, you SHOULD pick up one of those depending on what you need:
SetSqlDirectory
- initialize from a physical on-disk folderSetSqlDirectoryAndWatch
- initialize from a physical on-disk folder, and watch changes when edit those folder sdmap filesSetEmbeddedSqlAssembly
- initialize from a single assembly, and sdmap automatically parse all the resource file that ends with.sdmap
SetEmbeddedSqlAssemblies
- initialize from multiple assemblies, and sdmap automatically parse all the resource file that ends with.sdmap
SetSqlEmiter
- advanced, you can write your ownISdmapEmiter
.
- And you're good to go!
- If you want to emit the SQL statement manully, you may want to call:
string finalSqlToExecute = DbConnectionExtensions.EmitSql(sqlMapId, parameterObject);
https://marketplace.visualstudio.com/items?itemName=sdmapvstool.sdmapvstool
- Install .NET Core SDK(https://www.microsoft.com/net/download/core)
- Download code(
git clone https://github.com/sdcb/sdmap.git
) - JRE 1.6+ is preferred for building performance purpose but not required
- dotnet restore
- dotnet build