Repository files navigation

Dapper.FluentMap

Provides a simple API to fluently map POCO properties to database columns when using Dapper.


WindowsLinux/OSXNuGet
Windows Build statusLinux Build StatusNuGet Version

Introduction

This Dapper extension allows you to fluently congfigure the mapping between POCO properties and database columns. This keeps your POCO's clean of mapping attributes. The functionality is similar to Entity Framework Fluent API. If you have any questions, suggestions or bugs, please don't hesitate to contact me or create an issue.


Download

Download Dapper.FluentMap on NuGet


Usage

Manual mapping

You can map property names manually using the EntityMap<TEntity> class. When creating a derived class, the constructor gives you access to the Map method, allowing you to specify to which database column name a certain property of TEntity should map to.

publicclassProductMap:EntityMap<Product>{publicProductMap(){// Map property 'Name' to column 'strName'.Map(p =>p.Name).ToColumn("strName");// Ignore the 'LastModified' property when mapping.Map(p =>p.LastModified).Ignore();}}

Column names are mapped case sensitive by default. You can change this by specifying the caseSensitive parameter in the ToColumn() method: Map(p => p.Name).ToColumn("strName", caseSensitive: false).

Initialization:

FluentMapper.Initialize(config =>{config.AddMap(newProductMap());});

Convention based mapping

When you have a lot of entity types, creating manual mapping classes can become plumbing. If your column names adhere to some kind of naming convention, you might be better off by configuring a mapping convention.

You can create a convention by creating a class which derives from the Convention class. In the contructor you can configure the property conventions:

publicclassTypePrefixConvention:Convention{publicTypePrefixConvention(){// Map all properties of type int and with the name 'id' to column 'autID'.Properties<int>().Where(c =>c.Name.ToLower()=="id").Configure(c =>c.HasColumnName("autID"));// Prefix all properties of type string with 'str' when mapping to column names.Properties<string>().Configure(c =>c.HasPrefix("str"));// Prefix all properties of type int with 'int' when mapping to column names.Properties<int>().Configure(c =>c.HasPrefix("int"));}}

When initializing Dapper.FluentMap with conventions, the entities on which a convention applies must be configured. You can choose to either configure the entities explicitly or use assembly scanning.

FluentMapper.Initialize(config =>{// Configure entities explicitly.config.AddConvention<TypePrefixConvention>().ForEntity<Product>().ForEntity<Order>;// Configure all entities in a certain assembly with an optional namespaces filter.config.AddConvention<TypePrefixConvention>().ForEntitiesInAssembly(typeof(Product).Assembly,"App.Domain.Model");// Configure all entities in the current assembly with an optional namespaces filter.config.AddConvention<TypePrefixConvention>().ForEntitiesInCurrentAssembly("App.Domain.Model.Catalog","App.Domain.Model.Order");});
Transformations

The convention API allows you to configure transformation of property names to database column names. An implementation would look like this:

publicclassPropertyTransformConvention:Convention{publicPropertyTransformConvention(){Properties().Configure(c =>c.Transform(s =>Regex.Replace(input:s,pattern:"([A-Z])([A-Z][a-z])|([a-z0-9])([A-Z])",replacement:"$1$3_$2$4")));}}

This configuration will map camel case property names to underscore seperated database column names (UrlOptimizedName -> Url_Optimized_Name).


Dommel contains a set of extensions methods providing easy CRUD operations using Dapper. One of the goals was to provide extension points for resolving table and column names. Dapper.FluentMap.Dommel implements certain interfaces of Dommel and uses the configured mapping. It also provides more mapping functionality.

Usage

DommelEntityMap<TEntity>

This class derives from EntityMap<TEntity> and allows you to map an entity to a database table using the ToTable() method:

publicclassProductMap:DommelEntityMap<TEntity>{publicProductMap(){ToTable("tblProduct");// ...}}
DommelPropertyMap<TEntity>

This class derives PropertyMap<TEntity> and allows you to specify the key property of an entity using the IsKey method:

publicclassProductMap:DommelEntityMap<TEntity>{publicProductMap(){Map(p =>p.Id).IsKey();}}

You can configure Dapper.FluentMap.Dommel in the FluentMapper.Initialize() method:

FluentMapper.Initialize(config =>{config.AddMap(newProductMap());config.ForDommel();});

About

Provides a simple API to fluently map POCO properties to database columns when using Dapper.

Resources

Stars

0 stars

Watchers

2 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Repository files navigation

Dapper.FluentMap

Provides a simple API to fluently map POCO properties to database columns when using Dapper.


WindowsLinux/OSXNuGet
Windows Build statusLinux Build StatusNuGet Version

Introduction

This Dapper extension allows you to fluently congfigure the mapping between POCO properties and database columns. This keeps your POCO's clean of mapping attributes. The functionality is similar to Entity Framework Fluent API. If you have any questions, suggestions or bugs, please don't hesitate to contact me or create an issue.


Download

Download Dapper.FluentMap on NuGet


Usage

Manual mapping

You can map property names manually using the EntityMap<TEntity> class. When creating a derived class, the constructor gives you access to the Map method, allowing you to specify to which database column name a certain property of TEntity should map to.

publicclassProductMap:EntityMap<Product>{publicProductMap(){// Map property 'Name' to column 'strName'.Map(p =>p.Name).ToColumn("strName");// Ignore the 'LastModified' property when mapping.Map(p =>p.LastModified).Ignore();}}

Column names are mapped case sensitive by default. You can change this by specifying the caseSensitive parameter in the ToColumn() method: Map(p => p.Name).ToColumn("strName", caseSensitive: false).

Initialization:

FluentMapper.Initialize(config =>{config.AddMap(newProductMap());});

Convention based mapping

When you have a lot of entity types, creating manual mapping classes can become plumbing. If your column names adhere to some kind of naming convention, you might be better off by configuring a mapping convention.

You can create a convention by creating a class which derives from the Convention class. In the contructor you can configure the property conventions:

publicclassTypePrefixConvention:Convention{publicTypePrefixConvention(){// Map all properties of type int and with the name 'id' to column 'autID'.Properties<int>().Where(c =>c.Name.ToLower()=="id").Configure(c =>c.HasColumnName("autID"));// Prefix all properties of type string with 'str' when mapping to column names.Properties<string>().Configure(c =>c.HasPrefix("str"));// Prefix all properties of type int with 'int' when mapping to column names.Properties<int>().Configure(c =>c.HasPrefix("int"));}}

When initializing Dapper.FluentMap with conventions, the entities on which a convention applies must be configured. You can choose to either configure the entities explicitly or use assembly scanning.

FluentMapper.Initialize(config =>{// Configure entities explicitly.config.AddConvention<TypePrefixConvention>().ForEntity<Product>().ForEntity<Order>;// Configure all entities in a certain assembly with an optional namespaces filter.config.AddConvention<TypePrefixConvention>().ForEntitiesInAssembly(typeof(Product).Assembly,"App.Domain.Model");// Configure all entities in the current assembly with an optional namespaces filter.config.AddConvention<TypePrefixConvention>().ForEntitiesInCurrentAssembly("App.Domain.Model.Catalog","App.Domain.Model.Order");});
Transformations

The convention API allows you to configure transformation of property names to database column names. An implementation would look like this:

publicclassPropertyTransformConvention:Convention{publicPropertyTransformConvention(){Properties().Configure(c =>c.Transform(s =>Regex.Replace(input:s,pattern:"([A-Z])([A-Z][a-z])|([a-z0-9])([A-Z])",replacement:"$1$3_$2$4")));}}

This configuration will map camel case property names to underscore seperated database column names (UrlOptimizedName -> Url_Optimized_Name).


Dommel contains a set of extensions methods providing easy CRUD operations using Dapper. One of the goals was to provide extension points for resolving table and column names. Dapper.FluentMap.Dommel implements certain interfaces of Dommel and uses the configured mapping. It also provides more mapping functionality.

Usage

DommelEntityMap<TEntity>

This class derives from EntityMap<TEntity> and allows you to map an entity to a database table using the ToTable() method:

publicclassProductMap:DommelEntityMap<TEntity>{publicProductMap(){ToTable("tblProduct");// ...}}
DommelPropertyMap<TEntity>

This class derives PropertyMap<TEntity> and allows you to specify the key property of an entity using the IsKey method:

publicclassProductMap:DommelEntityMap<TEntity>{publicProductMap(){Map(p =>p.Id).IsKey();}}

You can configure Dapper.FluentMap.Dommel in the FluentMapper.Initialize() method:

FluentMapper.Initialize(config =>{config.AddMap(newProductMap());config.ForDommel();});

About

Provides a simple API to fluently map POCO properties to database columns when using Dapper.

Resources

Stars

0 stars

Watchers

2 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Dapper.FluentMap

Provides a simple API to fluently map POCO properties to database columns when using Dapper.


WindowsLinux/OSXNuGet
Windows Build statusLinux Build StatusNuGet Version

Introduction

This Dapper extension allows you to fluently congfigure the mapping between POCO properties and database columns. This keeps your POCO's clean of mapping attributes. The functionality is similar to Entity Framework Fluent API. If you have any questions, suggestions or bugs, please don't hesitate to contact me or create an issue.


Download

Download Dapper.FluentMap on NuGet


Usage

Manual mapping

You can map property names manually using the EntityMap<TEntity> class. When creating a derived class, the constructor gives you access to the Map method, allowing you to specify to which database column name a certain property of TEntity should map to.

publicclassProductMap:EntityMap<Product>{publicProductMap(){// Map property 'Name' to column 'strName'.Map(p =>p.Name).ToColumn("strName");// Ignore the 'LastModified' property when mapping.Map(p =>p.LastModified).Ignore();}}

Column names are mapped case sensitive by default. You can change this by specifying the caseSensitive parameter in the ToColumn() method: Map(p => p.Name).ToColumn("strName", caseSensitive: false).

Initialization:

FluentMapper.Initialize(config =>{config.AddMap(newProductMap());});

Convention based mapping

When you have a lot of entity types, creating manual mapping classes can become plumbing. If your column names adhere to some kind of naming convention, you might be better off by configuring a mapping convention.

You can create a convention by creating a class which derives from the Convention class. In the contructor you can configure the property conventions:

publicclassTypePrefixConvention:Convention{publicTypePrefixConvention(){// Map all properties of type int and with the name 'id' to column 'autID'.Properties<int>().Where(c =>c.Name.ToLower()=="id").Configure(c =>c.HasColumnName("autID"));// Prefix all properties of type string with 'str' when mapping to column names.Properties<string>().Configure(c =>c.HasPrefix("str"));// Prefix all properties of type int with 'int' when mapping to column names.Properties<int>().Configure(c =>c.HasPrefix("int"));}}

When initializing Dapper.FluentMap with conventions, the entities on which a convention applies must be configured. You can choose to either configure the entities explicitly or use assembly scanning.

FluentMapper.Initialize(config =>{// Configure entities explicitly.config.AddConvention<TypePrefixConvention>().ForEntity<Product>().ForEntity<Order>;// Configure all entities in a certain assembly with an optional namespaces filter.config.AddConvention<TypePrefixConvention>().ForEntitiesInAssembly(typeof(Product).Assembly,"App.Domain.Model");// Configure all entities in the current assembly with an optional namespaces filter.config.AddConvention<TypePrefixConvention>().ForEntitiesInCurrentAssembly("App.Domain.Model.Catalog","App.Domain.Model.Order");});
Transformations

The convention API allows you to configure transformation of property names to database column names. An implementation would look like this:

publicclassPropertyTransformConvention:Convention{publicPropertyTransformConvention(){Properties().Configure(c =>c.Transform(s =>Regex.Replace(input:s,pattern:"([A-Z])([A-Z][a-z])|([a-z0-9])([A-Z])",replacement:"$1$3_$2$4")));}}

This configuration will map camel case property names to underscore seperated database column names (UrlOptimizedName -> Url_Optimized_Name).


Dommel contains a set of extensions methods providing easy CRUD operations using Dapper. One of the goals was to provide extension points for resolving table and column names. Dapper.FluentMap.Dommel implements certain interfaces of Dommel and uses the configured mapping. It also provides more mapping functionality.

Usage

DommelEntityMap<TEntity>

This class derives from EntityMap<TEntity> and allows you to map an entity to a database table using the ToTable() method:

publicclassProductMap:DommelEntityMap<TEntity>{publicProductMap(){ToTable("tblProduct");// ...}}
DommelPropertyMap<TEntity>

This class derives PropertyMap<TEntity> and allows you to specify the key property of an entity using the IsKey method:

publicclassProductMap:DommelEntityMap<TEntity>{publicProductMap(){Map(p =>p.Id).IsKey();}}

You can configure Dapper.FluentMap.Dommel in the FluentMapper.Initialize() method:

FluentMapper.Initialize(config =>{config.AddMap(newProductMap());config.ForDommel();});

About

Provides a simple API to fluently map POCO properties to database columns when using Dapper.

Resources

Stars

0 stars

Watchers

2 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Dapper.FluentMap

Provides a simple API to fluently map POCO properties to database columns when using Dapper.


WindowsLinux/OSXNuGet
Windows Build statusLinux Build StatusNuGet Version

Introduction

This Dapper extension allows you to fluently congfigure the mapping between POCO properties and database columns. This keeps your POCO's clean of mapping attributes. The functionality is similar to Entity Framework Fluent API. If you have any questions, suggestions or bugs, please don't hesitate to contact me or create an issue.


Download

Download Dapper.FluentMap on NuGet


Usage

Manual mapping

You can map property names manually using the EntityMap<TEntity> class. When creating a derived class, the constructor gives you access to the Map method, allowing you to specify to which database column name a certain property of TEntity should map to.

publicclassProductMap:EntityMap<Product>{publicProductMap(){// Map property 'Name' to column 'strName'.Map(p =>p.Name).ToColumn("strName");// Ignore the 'LastModified' property when mapping.Map(p =>p.LastModified).Ignore();}}

Column names are mapped case sensitive by default. You can change this by specifying the caseSensitive parameter in the ToColumn() method: Map(p => p.Name).ToColumn("strName", caseSensitive: false).

Initialization:

FluentMapper.Initialize(config =>{config.AddMap(newProductMap());});

Convention based mapping

When you have a lot of entity types, creating manual mapping classes can become plumbing. If your column names adhere to some kind of naming convention, you might be better off by configuring a mapping convention.

You can create a convention by creating a class which derives from the Convention class. In the contructor you can configure the property conventions:

publicclassTypePrefixConvention:Convention{publicTypePrefixConvention(){// Map all properties of type int and with the name 'id' to column 'autID'.Properties<int>().Where(c =>c.Name.ToLower()=="id").Configure(c =>c.HasColumnName("autID"));// Prefix all properties of type string with 'str' when mapping to column names.Properties<string>().Configure(c =>c.HasPrefix("str"));// Prefix all properties of type int with 'int' when mapping to column names.Properties<int>().Configure(c =>c.HasPrefix("int"));}}

When initializing Dapper.FluentMap with conventions, the entities on which a convention applies must be configured. You can choose to either configure the entities explicitly or use assembly scanning.

FluentMapper.Initialize(config =>{// Configure entities explicitly.config.AddConvention<TypePrefixConvention>().ForEntity<Product>().ForEntity<Order>;// Configure all entities in a certain assembly with an optional namespaces filter.config.AddConvention<TypePrefixConvention>().ForEntitiesInAssembly(typeof(Product).Assembly,"App.Domain.Model");// Configure all entities in the current assembly with an optional namespaces filter.config.AddConvention<TypePrefixConvention>().ForEntitiesInCurrentAssembly("App.Domain.Model.Catalog","App.Domain.Model.Order");});
Transformations

The convention API allows you to configure transformation of property names to database column names. An implementation would look like this:

publicclassPropertyTransformConvention:Convention{publicPropertyTransformConvention(){Properties().Configure(c =>c.Transform(s =>Regex.Replace(input:s,pattern:"([A-Z])([A-Z][a-z])|([a-z0-9])([A-Z])",replacement:"$1$3_$2$4")));}}

This configuration will map camel case property names to underscore seperated database column names (UrlOptimizedName -> Url_Optimized_Name).


Dommel contains a set of extensions methods providing easy CRUD operations using Dapper. One of the goals was to provide extension points for resolving table and column names. Dapper.FluentMap.Dommel implements certain interfaces of Dommel and uses the configured mapping. It also provides more mapping functionality.

Usage

DommelEntityMap<TEntity>

This class derives from EntityMap<TEntity> and allows you to map an entity to a database table using the ToTable() method:

publicclassProductMap:DommelEntityMap<TEntity>{publicProductMap(){ToTable("tblProduct");// ...}}
DommelPropertyMap<TEntity>

This class derives PropertyMap<TEntity> and allows you to specify the key property of an entity using the IsKey method:

publicclassProductMap:DommelEntityMap<TEntity>{publicProductMap(){Map(p =>p.Id).IsKey();}}

You can configure Dapper.FluentMap.Dommel in the FluentMapper.Initialize() method:

FluentMapper.Initialize(config =>{config.AddMap(newProductMap());config.ForDommel();});

About

Provides a simple API to fluently map POCO properties to database columns when using Dapper.

Resources

Stars

0 stars

Watchers

2 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Repository files navigation

Dapper.FluentMap

Provides a simple API to fluently map POCO properties to database columns when using Dapper.


WindowsLinux/OSXNuGet
Windows Build statusLinux Build StatusNuGet Version

Introduction

This Dapper extension allows you to fluently congfigure the mapping between POCO properties and database columns. This keeps your POCO's clean of mapping attributes. The functionality is similar to Entity Framework Fluent API. If you have any questions, suggestions or bugs, please don't hesitate to contact me or create an issue.


Download

Download Dapper.FluentMap on NuGet


Usage

Manual mapping

You can map property names manually using the EntityMap<TEntity> class. When creating a derived class, the constructor gives you access to the Map method, allowing you to specify to which database column name a certain property of TEntity should map to.

publicclassProductMap:EntityMap<Product>{publicProductMap(){// Map property 'Name' to column 'strName'.Map(p =>p.Name).ToColumn("strName");// Ignore the 'LastModified' property when mapping.Map(p =>p.LastModified).Ignore();}}

Column names are mapped case sensitive by default. You can change this by specifying the caseSensitive parameter in the ToColumn() method: Map(p => p.Name).ToColumn("strName", caseSensitive: false).

Initialization:

FluentMapper.Initialize(config =>{config.AddMap(newProductMap());});

Convention based mapping

When you have a lot of entity types, creating manual mapping classes can become plumbing. If your column names adhere to some kind of naming convention, you might be better off by configuring a mapping convention.

You can create a convention by creating a class which derives from the Convention class. In the contructor you can configure the property conventions:

publicclassTypePrefixConvention:Convention{publicTypePrefixConvention(){// Map all properties of type int and with the name 'id' to column 'autID'.Properties<int>().Where(c =>c.Name.ToLower()=="id").Configure(c =>c.HasColumnName("autID"));// Prefix all properties of type string with 'str' when mapping to column names.Properties<string>().Configure(c =>c.HasPrefix("str"));// Prefix all properties of type int with 'int' when mapping to column names.Properties<int>().Configure(c =>c.HasPrefix("int"));}}

When initializing Dapper.FluentMap with conventions, the entities on which a convention applies must be configured. You can choose to either configure the entities explicitly or use assembly scanning.

FluentMapper.Initialize(config =>{// Configure entities explicitly.config.AddConvention<TypePrefixConvention>().ForEntity<Product>().ForEntity<Order>;// Configure all entities in a certain assembly with an optional namespaces filter.config.AddConvention<TypePrefixConvention>().ForEntitiesInAssembly(typeof(Product).Assembly,"App.Domain.Model");// Configure all entities in the current assembly with an optional namespaces filter.config.AddConvention<TypePrefixConvention>().ForEntitiesInCurrentAssembly("App.Domain.Model.Catalog","App.Domain.Model.Order");});
Transformations

The convention API allows you to configure transformation of property names to database column names. An implementation would look like this:

publicclassPropertyTransformConvention:Convention{publicPropertyTransformConvention(){Properties().Configure(c =>c.Transform(s =>Regex.Replace(input:s,pattern:"([A-Z])([A-Z][a-z])|([a-z0-9])([A-Z])",replacement:"$1$3_$2$4")));}}

This configuration will map camel case property names to underscore seperated database column names (UrlOptimizedName -> Url_Optimized_Name).


Dommel contains a set of extensions methods providing easy CRUD operations using Dapper. One of the goals was to provide extension points for resolving table and column names. Dapper.FluentMap.Dommel implements certain interfaces of Dommel and uses the configured mapping. It also provides more mapping functionality.

Usage

DommelEntityMap<TEntity>

This class derives from EntityMap<TEntity> and allows you to map an entity to a database table using the ToTable() method:

publicclassProductMap:DommelEntityMap<TEntity>{publicProductMap(){ToTable("tblProduct");// ...}}
DommelPropertyMap<TEntity>

This class derives PropertyMap<TEntity> and allows you to specify the key property of an entity using the IsKey method:

publicclassProductMap:DommelEntityMap<TEntity>{publicProductMap(){Map(p =>p.Id).IsKey();}}

You can configure Dapper.FluentMap.Dommel in the FluentMapper.Initialize() method:

FluentMapper.Initialize(config =>{config.AddMap(newProductMap());config.ForDommel();});

About

Provides a simple API to fluently map POCO properties to database columns when using Dapper.

Resources

Stars

0 stars

Watchers

2 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Dapper.FluentMap

Provides a simple API to fluently map POCO properties to database columns when using Dapper.


WindowsLinux/OSXNuGet
Windows Build statusLinux Build StatusNuGet Version

Introduction

This Dapper extension allows you to fluently congfigure the mapping between POCO properties and database columns. This keeps your POCO's clean of mapping attributes. The functionality is similar to Entity Framework Fluent API. If you have any questions, suggestions or bugs, please don't hesitate to contact me or create an issue.


Download

Download Dapper.FluentMap on NuGet


Usage

Manual mapping

You can map property names manually using the EntityMap<TEntity> class. When creating a derived class, the constructor gives you access to the Map method, allowing you to specify to which database column name a certain property of TEntity should map to.

publicclassProductMap:EntityMap<Product>{publicProductMap(){// Map property 'Name' to column 'strName'.Map(p =>p.Name).ToColumn("strName");// Ignore the 'LastModified' property when mapping.Map(p =>p.LastModified).Ignore();}}

Column names are mapped case sensitive by default. You can change this by specifying the caseSensitive parameter in the ToColumn() method: Map(p => p.Name).ToColumn("strName", caseSensitive: false).

Initialization:

FluentMapper.Initialize(config =>{config.AddMap(newProductMap());});

Convention based mapping

When you have a lot of entity types, creating manual mapping classes can become plumbing. If your column names adhere to some kind of naming convention, you might be better off by configuring a mapping convention.

You can create a convention by creating a class which derives from the Convention class. In the contructor you can configure the property conventions:

publicclassTypePrefixConvention:Convention{publicTypePrefixConvention(){// Map all properties of type int and with the name 'id' to column 'autID'.Properties<int>().Where(c =>c.Name.ToLower()=="id").Configure(c =>c.HasColumnName("autID"));// Prefix all properties of type string with 'str' when mapping to column names.Properties<string>().Configure(c =>c.HasPrefix("str"));// Prefix all properties of type int with 'int' when mapping to column names.Properties<int>().Configure(c =>c.HasPrefix("int"));}}

When initializing Dapper.FluentMap with conventions, the entities on which a convention applies must be configured. You can choose to either configure the entities explicitly or use assembly scanning.

FluentMapper.Initialize(config =>{// Configure entities explicitly.config.AddConvention<TypePrefixConvention>().ForEntity<Product>().ForEntity<Order>;// Configure all entities in a certain assembly with an optional namespaces filter.config.AddConvention<TypePrefixConvention>().ForEntitiesInAssembly(typeof(Product).Assembly,"App.Domain.Model");// Configure all entities in the current assembly with an optional namespaces filter.config.AddConvention<TypePrefixConvention>().ForEntitiesInCurrentAssembly("App.Domain.Model.Catalog","App.Domain.Model.Order");});
Transformations

The convention API allows you to configure transformation of property names to database column names. An implementation would look like this:

publicclassPropertyTransformConvention:Convention{publicPropertyTransformConvention(){Properties().Configure(c =>c.Transform(s =>Regex.Replace(input:s,pattern:"([A-Z])([A-Z][a-z])|([a-z0-9])([A-Z])",replacement:"$1$3_$2$4")));}}

This configuration will map camel case property names to underscore seperated database column names (UrlOptimizedName -> Url_Optimized_Name).


Dommel contains a set of extensions methods providing easy CRUD operations using Dapper. One of the goals was to provide extension points for resolving table and column names. Dapper.FluentMap.Dommel implements certain interfaces of Dommel and uses the configured mapping. It also provides more mapping functionality.

Usage

DommelEntityMap<TEntity>

This class derives from EntityMap<TEntity> and allows you to map an entity to a database table using the ToTable() method:

publicclassProductMap:DommelEntityMap<TEntity>{publicProductMap(){ToTable("tblProduct");// ...}}
DommelPropertyMap<TEntity>

This class derives PropertyMap<TEntity> and allows you to specify the key property of an entity using the IsKey method:

publicclassProductMap:DommelEntityMap<TEntity>{publicProductMap(){Map(p =>p.Id).IsKey();}}

You can configure Dapper.FluentMap.Dommel in the FluentMapper.Initialize() method:

FluentMapper.Initialize(config =>{config.AddMap(newProductMap());config.ForDommel();});

About

Provides a simple API to fluently map POCO properties to database columns when using Dapper.

Resources

Stars

0 stars

Watchers

2 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Dapper.FluentMap

Provides a simple API to fluently map POCO properties to database columns when using Dapper.


WindowsLinux/OSXNuGet
Windows Build statusLinux Build StatusNuGet Version

Introduction

This Dapper extension allows you to fluently congfigure the mapping between POCO properties and database columns. This keeps your POCO's clean of mapping attributes. The functionality is similar to Entity Framework Fluent API. If you have any questions, suggestions or bugs, please don't hesitate to contact me or create an issue.


Download

Download Dapper.FluentMap on NuGet


Usage

Manual mapping

You can map property names manually using the EntityMap<TEntity> class. When creating a derived class, the constructor gives you access to the Map method, allowing you to specify to which database column name a certain property of TEntity should map to.

publicclassProductMap:EntityMap<Product>{publicProductMap(){// Map property 'Name' to column 'strName'.Map(p =>p.Name).ToColumn("strName");// Ignore the 'LastModified' property when mapping.Map(p =>p.LastModified).Ignore();}}

Column names are mapped case sensitive by default. You can change this by specifying the caseSensitive parameter in the ToColumn() method: Map(p => p.Name).ToColumn("strName", caseSensitive: false).

Initialization:

FluentMapper.Initialize(config =>{config.AddMap(newProductMap());});

Convention based mapping

When you have a lot of entity types, creating manual mapping classes can become plumbing. If your column names adhere to some kind of naming convention, you might be better off by configuring a mapping convention.

You can create a convention by creating a class which derives from the Convention class. In the contructor you can configure the property conventions:

publicclassTypePrefixConvention:Convention{publicTypePrefixConvention(){// Map all properties of type int and with the name 'id' to column 'autID'.Properties<int>().Where(c =>c.Name.ToLower()=="id").Configure(c =>c.HasColumnName("autID"));// Prefix all properties of type string with 'str' when mapping to column names.Properties<string>().Configure(c =>c.HasPrefix("str"));// Prefix all properties of type int with 'int' when mapping to column names.Properties<int>().Configure(c =>c.HasPrefix("int"));}}

When initializing Dapper.FluentMap with conventions, the entities on which a convention applies must be configured. You can choose to either configure the entities explicitly or use assembly scanning.

FluentMapper.Initialize(config =>{// Configure entities explicitly.config.AddConvention<TypePrefixConvention>().ForEntity<Product>().ForEntity<Order>;// Configure all entities in a certain assembly with an optional namespaces filter.config.AddConvention<TypePrefixConvention>().ForEntitiesInAssembly(typeof(Product).Assembly,"App.Domain.Model");// Configure all entities in the current assembly with an optional namespaces filter.config.AddConvention<TypePrefixConvention>().ForEntitiesInCurrentAssembly("App.Domain.Model.Catalog","App.Domain.Model.Order");});
Transformations

The convention API allows you to configure transformation of property names to database column names. An implementation would look like this:

publicclassPropertyTransformConvention:Convention{publicPropertyTransformConvention(){Properties().Configure(c =>c.Transform(s =>Regex.Replace(input:s,pattern:"([A-Z])([A-Z][a-z])|([a-z0-9])([A-Z])",replacement:"$1$3_$2$4")));}}

This configuration will map camel case property names to underscore seperated database column names (UrlOptimizedName -> Url_Optimized_Name).


Dommel contains a set of extensions methods providing easy CRUD operations using Dapper. One of the goals was to provide extension points for resolving table and column names. Dapper.FluentMap.Dommel implements certain interfaces of Dommel and uses the configured mapping. It also provides more mapping functionality.

Usage

DommelEntityMap<TEntity>

This class derives from EntityMap<TEntity> and allows you to map an entity to a database table using the ToTable() method:

publicclassProductMap:DommelEntityMap<TEntity>{publicProductMap(){ToTable("tblProduct");// ...}}
DommelPropertyMap<TEntity>

This class derives PropertyMap<TEntity> and allows you to specify the key property of an entity using the IsKey method:

publicclassProductMap:DommelEntityMap<TEntity>{publicProductMap(){Map(p =>p.Id).IsKey();}}

You can configure Dapper.FluentMap.Dommel in the FluentMapper.Initialize() method:

FluentMapper.Initialize(config =>{config.AddMap(newProductMap());config.ForDommel();});

About

Provides a simple API to fluently map POCO properties to database columns when using Dapper.

Resources

Stars

0 stars

Watchers

2 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Repository files navigation

Dapper.FluentMap

Provides a simple API to fluently map POCO properties to database columns when using Dapper.


WindowsLinux/OSXNuGet
Windows Build statusLinux Build StatusNuGet Version

Introduction

This Dapper extension allows you to fluently congfigure the mapping between POCO properties and database columns. This keeps your POCO's clean of mapping attributes. The functionality is similar to Entity Framework Fluent API. If you have any questions, suggestions or bugs, please don't hesitate to contact me or create an issue.


Download

Download Dapper.FluentMap on NuGet


Usage

Manual mapping

You can map property names manually using the EntityMap<TEntity> class. When creating a derived class, the constructor gives you access to the Map method, allowing you to specify to which database column name a certain property of TEntity should map to.

publicclassProductMap:EntityMap<Product>{publicProductMap(){// Map property 'Name' to column 'strName'.Map(p =>p.Name).ToColumn("strName");// Ignore the 'LastModified' property when mapping.Map(p =>p.LastModified).Ignore();}}

Column names are mapped case sensitive by default. You can change this by specifying the caseSensitive parameter in the ToColumn() method: Map(p => p.Name).ToColumn("strName", caseSensitive: false).

Initialization:

FluentMapper.Initialize(config =>{config.AddMap(newProductMap());});

Convention based mapping

When you have a lot of entity types, creating manual mapping classes can become plumbing. If your column names adhere to some kind of naming convention, you might be better off by configuring a mapping convention.

You can create a convention by creating a class which derives from the Convention class. In the contructor you can configure the property conventions:

publicclassTypePrefixConvention:Convention{publicTypePrefixConvention(){// Map all properties of type int and with the name 'id' to column 'autID'.Properties<int>().Where(c =>c.Name.ToLower()=="id").Configure(c =>c.HasColumnName("autID"));// Prefix all properties of type string with 'str' when mapping to column names.Properties<string>().Configure(c =>c.HasPrefix("str"));// Prefix all properties of type int with 'int' when mapping to column names.Properties<int>().Configure(c =>c.HasPrefix("int"));}}

When initializing Dapper.FluentMap with conventions, the entities on which a convention applies must be configured. You can choose to either configure the entities explicitly or use assembly scanning.

FluentMapper.Initialize(config =>{// Configure entities explicitly.config.AddConvention<TypePrefixConvention>().ForEntity<Product>().ForEntity<Order>;// Configure all entities in a certain assembly with an optional namespaces filter.config.AddConvention<TypePrefixConvention>().ForEntitiesInAssembly(typeof(Product).Assembly,"App.Domain.Model");// Configure all entities in the current assembly with an optional namespaces filter.config.AddConvention<TypePrefixConvention>().ForEntitiesInCurrentAssembly("App.Domain.Model.Catalog","App.Domain.Model.Order");});
Transformations

The convention API allows you to configure transformation of property names to database column names. An implementation would look like this:

publicclassPropertyTransformConvention:Convention{publicPropertyTransformConvention(){Properties().Configure(c =>c.Transform(s =>Regex.Replace(input:s,pattern:"([A-Z])([A-Z][a-z])|([a-z0-9])([A-Z])",replacement:"$1$3_$2$4")));}}

This configuration will map camel case property names to underscore seperated database column names (UrlOptimizedName -> Url_Optimized_Name).


Dommel contains a set of extensions methods providing easy CRUD operations using Dapper. One of the goals was to provide extension points for resolving table and column names. Dapper.FluentMap.Dommel implements certain interfaces of Dommel and uses the configured mapping. It also provides more mapping functionality.

Usage

DommelEntityMap<TEntity>

This class derives from EntityMap<TEntity> and allows you to map an entity to a database table using the ToTable() method:

publicclassProductMap:DommelEntityMap<TEntity>{publicProductMap(){ToTable("tblProduct");// ...}}
DommelPropertyMap<TEntity>

This class derives PropertyMap<TEntity> and allows you to specify the key property of an entity using the IsKey method:

publicclassProductMap:DommelEntityMap<TEntity>{publicProductMap(){Map(p =>p.Id).IsKey();}}

You can configure Dapper.FluentMap.Dommel in the FluentMapper.Initialize() method:

FluentMapper.Initialize(config =>{config.AddMap(newProductMap());config.ForDommel();});

About

Provides a simple API to fluently map POCO properties to database columns when using Dapper.

Resources

Stars

0 stars

Watchers

2 watching

Forks

Releases

Packages

Contributors

Languages