From 18115357a95d12771f2486706481d13e16a8660a Mon Sep 17 00:00:00 2001 From: Henk Mollema Date: Sat, 11 Jun 2016 10:11:46 +0200 Subject: [PATCH] Migrate to .NETStandard (#39) * Migrate to .NETStandard 1.3 * Fix Linux/OSX build * Make type conventions dictionary concurrent * Fix license version, remove unused files * Fix package metadata * Add comments --- .gitattributes | 63 ++++ .gitignore | 212 ++--------- .travis.yml | 24 ++ Dapper.FluentMap.sln | 49 +++ LICENSE | 2 +- NuGet.Config | 7 + README.md | 8 +- appveyor.yml | 7 + build.cmd | 2 + build.ps1 | 67 ++++ build.sh | 46 +++ examples/DapperFluentMapInitializer.cs | 26 -- examples/ProductMap.cs | 25 -- examples/PropertyTransformConvention.cs | 18 - examples/TypePrefixConvention.cs | 30 -- global.json | 3 + nuget/Dapper.FluentMap.1.0.0.nupkg | Bin 7089 -> 0 bytes nuget/Dapper.FluentMap.1.0.1.nupkg | Bin 6961 -> 0 bytes nuget/Dapper.FluentMap.1.0.2.nupkg | Bin 8672 -> 0 bytes nuget/Dapper.FluentMap.1.1.0.nupkg | Bin 13128 -> 0 bytes nuget/Dapper.FluentMap.1.1.1.nupkg | Bin 13297 -> 0 bytes nuget/Dapper.FluentMap.1.2.0.nupkg | Bin 13497 -> 0 bytes nuget/Dapper.FluentMap.1.2.1.nupkg | Bin 14028 -> 0 bytes nuget/Dapper.FluentMap.1.3.0.nupkg | Bin 14592 -> 0 bytes nuget/Dapper.FluentMap.1.3.1.nupkg | Bin 14620 -> 0 bytes nuget/Dapper.FluentMap.1.3.2.nupkg | Bin 25971 -> 0 bytes nuget/Dapper.FluentMap.1.3.3.nupkg | Bin 26115 -> 0 bytes nuget/Dapper.FluentMap.1.3.4.nupkg | Bin 26733 -> 0 bytes nuget/Dapper.FluentMap.1.4.0.nupkg | Bin 14502 -> 0 bytes nuget/Dapper.FluentMap.1.5.0-beta1.nupkg | Bin 14716 -> 0 bytes nuget/Dapper.FluentMap.Dommel.1.0.0.nupkg | Bin 2637 -> 0 bytes nuget/Dapper.FluentMap.Dommel.1.0.1.nupkg | Bin 2651 -> 0 bytes nuget/Dapper.FluentMap.Dommel.1.0.2.nupkg | Bin 7240 -> 0 bytes nuget/Dapper.FluentMap.Dommel.1.0.3.nupkg | Bin 7266 -> 0 bytes nuget/Dapper.FluentMap.Dommel.1.1.0.nupkg | Bin 8606 -> 0 bytes nuget/Dapper.FluentMap.Dommel.1.2.0.nupkg | Bin 9293 -> 0 bytes .../Dapper.FluentMap.Dommel.1.3.0-beta1.nupkg | Bin 9008 -> 0 bytes .../Dapper.FluentMap.Dommel.csproj | 81 ----- .../Dapper.FluentMap.Dommel.xproj | 21 ++ .../Mapping/DommelEntityMap.cs | 3 + .../Mapping/DommelPropertyMap.cs | 5 +- .../Resolvers/DommelColumnNameResolver.cs | 73 ++-- .../Resolvers/DommelKeyPropertyResolver.cs | 91 ++--- .../Resolvers/DommelPropertyResolver.cs | 104 +++--- .../Resolvers/DommelTableNameResolver.cs | 59 +-- src/Dapper.FluentMap.Dommel/packages.config | 5 - src/Dapper.FluentMap.Dommel/project.json | 26 ++ src/Dapper.FluentMap.Tests/ConventionTests.cs | 38 -- .../Dapper.FluentMap.Tests.csproj | 102 ------ .../Properties/AssemblyInfo.cs | 36 -- src/Dapper.FluentMap.Tests/packages.config | 4 - src/Dapper.FluentMap.sln | 34 -- .../FluentConventionConfiguration.cs | 38 +- .../Configuration/FluentMapConfiguration.cs | 5 +- .../Conventions/Convention.cs | 6 +- .../PropertyConventionConfiguration.cs | 9 +- src/Dapper.FluentMap/Dapper.FluentMap.csproj | 74 ---- src/Dapper.FluentMap/Dapper.FluentMap.xproj | 19 + src/Dapper.FluentMap/FluentMapper.cs | 152 ++++---- src/Dapper.FluentMap/Mapping/EntityMap.cs | 9 +- src/Dapper.FluentMap/Mapping/PropertyMap.cs | 36 +- .../Properties/AssemblyInfo.cs | 26 -- .../TypeMaps/FluentConventionTypeMap.cs | 167 ++++----- .../TypeMaps/FluentTypeMap.cs | 140 +++---- src/Dapper.FluentMap/TypeMaps/MultiTypeMap.cs | 18 +- src/Dapper.FluentMap/packages.config | 4 - src/Dapper.FluentMap/project.json | 44 +++ .../Dapper.FluentMap.Tests/ConventionTests.cs | 58 +++ .../Dapper.FluentMap.Tests.xproj | 19 + .../ManualMappingTests.cs | 341 ++++++++++-------- .../Properties/AssemblyInfo.cs | 49 ++- .../Dapper.FluentMap.Tests/TestEntity.cs | 2 +- test/Dapper.FluentMap.Tests/project.json | 28 ++ 73 files changed, 1230 insertions(+), 1285 deletions(-) create mode 100644 .gitattributes create mode 100644 .travis.yml create mode 100644 Dapper.FluentMap.sln create mode 100644 NuGet.Config create mode 100644 appveyor.yml create mode 100644 build.cmd create mode 100644 build.ps1 create mode 100755 build.sh delete mode 100644 examples/DapperFluentMapInitializer.cs delete mode 100644 examples/ProductMap.cs delete mode 100644 examples/PropertyTransformConvention.cs delete mode 100644 examples/TypePrefixConvention.cs create mode 100644 global.json delete mode 100644 nuget/Dapper.FluentMap.1.0.0.nupkg delete mode 100644 nuget/Dapper.FluentMap.1.0.1.nupkg delete mode 100644 nuget/Dapper.FluentMap.1.0.2.nupkg delete mode 100644 nuget/Dapper.FluentMap.1.1.0.nupkg delete mode 100644 nuget/Dapper.FluentMap.1.1.1.nupkg delete mode 100644 nuget/Dapper.FluentMap.1.2.0.nupkg delete mode 100644 nuget/Dapper.FluentMap.1.2.1.nupkg delete mode 100644 nuget/Dapper.FluentMap.1.3.0.nupkg delete mode 100644 nuget/Dapper.FluentMap.1.3.1.nupkg delete mode 100644 nuget/Dapper.FluentMap.1.3.2.nupkg delete mode 100644 nuget/Dapper.FluentMap.1.3.3.nupkg delete mode 100644 nuget/Dapper.FluentMap.1.3.4.nupkg delete mode 100644 nuget/Dapper.FluentMap.1.4.0.nupkg delete mode 100644 nuget/Dapper.FluentMap.1.5.0-beta1.nupkg delete mode 100644 nuget/Dapper.FluentMap.Dommel.1.0.0.nupkg delete mode 100644 nuget/Dapper.FluentMap.Dommel.1.0.1.nupkg delete mode 100644 nuget/Dapper.FluentMap.Dommel.1.0.2.nupkg delete mode 100644 nuget/Dapper.FluentMap.Dommel.1.0.3.nupkg delete mode 100644 nuget/Dapper.FluentMap.Dommel.1.1.0.nupkg delete mode 100644 nuget/Dapper.FluentMap.Dommel.1.2.0.nupkg delete mode 100644 nuget/Dapper.FluentMap.Dommel.1.3.0-beta1.nupkg delete mode 100644 src/Dapper.FluentMap.Dommel/Dapper.FluentMap.Dommel.csproj create mode 100644 src/Dapper.FluentMap.Dommel/Dapper.FluentMap.Dommel.xproj delete mode 100644 src/Dapper.FluentMap.Dommel/packages.config create mode 100644 src/Dapper.FluentMap.Dommel/project.json delete mode 100644 src/Dapper.FluentMap.Tests/ConventionTests.cs delete mode 100644 src/Dapper.FluentMap.Tests/Dapper.FluentMap.Tests.csproj delete mode 100644 src/Dapper.FluentMap.Tests/Properties/AssemblyInfo.cs delete mode 100644 src/Dapper.FluentMap.Tests/packages.config delete mode 100644 src/Dapper.FluentMap.sln delete mode 100644 src/Dapper.FluentMap/Dapper.FluentMap.csproj create mode 100644 src/Dapper.FluentMap/Dapper.FluentMap.xproj delete mode 100644 src/Dapper.FluentMap/Properties/AssemblyInfo.cs delete mode 100644 src/Dapper.FluentMap/packages.config create mode 100644 src/Dapper.FluentMap/project.json create mode 100644 test/Dapper.FluentMap.Tests/ConventionTests.cs create mode 100644 test/Dapper.FluentMap.Tests/Dapper.FluentMap.Tests.xproj rename {src => test}/Dapper.FluentMap.Tests/ManualMappingTests.cs (50%) rename {src/Dapper.FluentMap.Dommel => test/Dapper.FluentMap.Tests}/Properties/AssemblyInfo.cs (66%) rename {src => test}/Dapper.FluentMap.Tests/TestEntity.cs (99%) create mode 100644 test/Dapper.FluentMap.Tests/project.json diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..1ff0c42 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,63 @@ +############################################################################### +# Set default behavior to automatically normalize line endings. +############################################################################### +* text=auto + +############################################################################### +# Set default behavior for command prompt diff. +# +# This is need for earlier builds of msysgit that does not have it on by +# default for csharp files. +# Note: This is only used by command line +############################################################################### +#*.cs diff=csharp + +############################################################################### +# Set the merge driver for project and solution files +# +# Merging from the command prompt will add diff markers to the files if there +# are conflicts (Merging from VS is not affected by the settings below, in VS +# the diff markers are never inserted). Diff markers may cause the following +# file extensions to fail to load in VS. An alternative would be to treat +# these files as binary and thus will always conflict and require user +# intervention with every merge. To do so, just uncomment the entries below +############################################################################### +#*.sln merge=binary +#*.csproj merge=binary +#*.vbproj merge=binary +#*.vcxproj merge=binary +#*.vcproj merge=binary +#*.dbproj merge=binary +#*.fsproj merge=binary +#*.lsproj merge=binary +#*.wixproj merge=binary +#*.modelproj merge=binary +#*.sqlproj merge=binary +#*.wwaproj merge=binary + +############################################################################### +# behavior for image files +# +# image files are treated as binary by default. +############################################################################### +#*.jpg binary +#*.png binary +#*.gif binary + +############################################################################### +# diff behavior for common document formats +# +# Convert binary document formats to text before diffing them. This feature +# is only available from the command line. Turn it on by uncommenting the +# entries below. +############################################################################### +#*.doc diff=astextplain +#*.DOC diff=astextplain +#*.docx diff=astextplain +#*.DOCX diff=astextplain +#*.dot diff=astextplain +#*.DOT diff=astextplain +#*.pdf diff=astextplain +#*.PDF diff=astextplain +#*.rtf diff=astextplain +#*.RTF diff=astextplain diff --git a/.gitignore b/.gitignore index 409da21..ed459d6 100644 --- a/.gitignore +++ b/.gitignore @@ -1,174 +1,38 @@ -## Ignore Visual Studio temporary files, build results, and -## files generated by popular Visual Studio add-ons. - -# User-specific files -*.suo -*.user -*.sln.docstates - -# Build results -[Dd]ebug/ -[Dd]ebugPublic/ -[Rr]elease/ -x64/ -build/ -bld/ -[Bb]in/ -[Oo]bj/ - -# MSTest test Results -[Tt]est[Rr]esult*/ -[Bb]uild[Ll]og.* - -#NUNIT -*.VisualState.xml -TestResult.xml - -# Build Results of an ATL Project -[Dd]ebugPS/ -[Rr]eleasePS/ -dlldata.c - -*_i.c -*_p.c -*_i.h -*.ilk -*.meta -*.obj -*.pch -*.pdb -*.pgc -*.pgd -*.rsp -*.sbr -*.tlb -*.tli -*.tlh -*.tmp -*.tmp_proj -*.log -*.vspscc -*.vssscc -.builds -*.pidb -*.svclog -*.scc - -# Chutzpah Test files -_Chutzpah* - -# Visual C++ cache files -ipch/ -*.aps -*.ncb -*.opensdf -*.sdf -*.cachefile - -# Visual Studio profiler -*.psess -*.vsp -*.vspx - -# TFS 2012 Local Workspace -$tf/ - -# Guidance Automation Toolkit -*.gpState - -# ReSharper is a .NET coding add-in -_ReSharper*/ -*.[Rr]e[Ss]harper -*.DotSettings.user - -# JustCode is a .NET coding addin-in -.JustCode - -# TeamCity is a build add-in -_TeamCity* - -# DotCover is a Code Coverage Tool -*.dotCover - -# NCrunch -*.ncrunch* -_NCrunch_* -.*crunch*.local.xml - -# MightyMoose -*.mm.* -AutoTest.Net/ - -# Web workbench (sass) -.sass-cache/ - -# Installshield output folder -[Ee]xpress/ - -# DocProject is a documentation generator add-in -DocProject/buildhelp/ -DocProject/Help/*.HxT -DocProject/Help/*.HxC -DocProject/Help/*.hhc -DocProject/Help/*.hhk -DocProject/Help/*.hhp -DocProject/Help/Html2 -DocProject/Help/html - -# Click-Once directory -publish/ - -# Publish Web Output -*.[Pp]ublish.xml -*.azurePubxml - -# NuGet Packages Directory -packages/ -## TODO: If the tool you use requires repositories.config uncomment the next line -#!packages/repositories.config - -# Enable "build/" folder in the NuGet Packages folder since NuGet packages use it for MSBuild targets -# This line needs to be after the ignore of the build folder (and the packages folder if the line above has been uncommented) -!packages/build/ - -# Windows Azure Build Output -csx/ -*.build.csdef - -# Windows Store app package directory -AppPackages/ - -# Others -sql/ -*.Cache -ClientBin/ -[Ss]tyle[Cc]op.* -~$* -*~ -*.dbmdl -*.dbproj.schemaview -*.pfx -*.publishsettings -node_modules/ - -# RIA/Silverlight projects -Generated_Code/ - -# Backup & report files from converting an old project file to a newer -# Visual Studio version. Backup files are not needed, because we have git ;-) -_UpgradeReport_Files/ -Backup*/ -UpgradeLog*.XML -UpgradeLog*.htm - -# SQL Server files -*.mdf -*.ldf - -# Business Intelligence projects -*.rdl.data -*.bim.layout -*.bim_*.settings - -# Microsoft Fakes -FakesAssemblies/ +[Oo]bj/ +[Bb]in/ +TestResults/ +.nuget/ +*.sln.ide/ +_ReSharper.*/ +packages/ +artifacts/ +PublishProfiles/ +.vs/ +bower_components/ +node_modules/ +**/wwwroot/lib/ +debugSettings.json +project.lock.json +*.user +*.suo +*.cache +*.docstates +_ReSharper.* +nuget.exe +*net45.csproj +*net451.csproj +*k10.csproj +*.psess +*.vsp +*.pidb +*.userprefs +*DS_Store +*.ncrunchsolution +*.*sdf +*.ipch +.settings +*.sln.ide +node_modules +**/[Cc]ompiler/[Rr]esources/**/*.js +deploy/ +/.build diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 0000000..8e4ca07 --- /dev/null +++ b/.travis.yml @@ -0,0 +1,24 @@ +language: csharp +sudo: required +dist: trusty +addons: + apt: + packages: + - gettext + - libcurl4-openssl-dev + - libicu-dev + - libssl-dev + - libunwind8 + - zlib1g +before_install: + - if test "$TRAVIS_OS_NAME" == "osx"; then brew update; brew install icu4c; brew install openssl; brew link --force openssl; fi +mono: + - 4.0.5 +os: + - linux + - osx +osx_image: xcode7.1 +script: + - ./build.sh --quiet verify +env: + - KOREBUILD_TEST_SKIPMONO=1 \ No newline at end of file diff --git a/Dapper.FluentMap.sln b/Dapper.FluentMap.sln new file mode 100644 index 0000000..0d2af46 --- /dev/null +++ b/Dapper.FluentMap.sln @@ -0,0 +1,49 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 14 +VisualStudioVersion = 14.0.25123.0 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{580E3446-6579-4414-9875-970849E635E5}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{04C7C13D-7D23-42C4-9D6F-B76D94BCAA8C}" + ProjectSection(SolutionItems) = preProject + global.json = global.json + NuGet.Config = NuGet.Config + EndProjectSection +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "test", "test", "{742442F2-CAE7-4DC8-BD73-8C54C0005A53}" +EndProject +Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "Dapper.FluentMap", "src\Dapper.FluentMap\Dapper.FluentMap.xproj", "{457E0B9B-F6A4-42C6-BFAE-6F8C71D1F435}" +EndProject +Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "Dapper.FluentMap.Tests", "test\Dapper.FluentMap.Tests\Dapper.FluentMap.Tests.xproj", "{8901F2FD-F98B-484B-A20A-7844A39C7458}" +EndProject +Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "Dapper.FluentMap.Dommel", "src\Dapper.FluentMap.Dommel\Dapper.FluentMap.Dommel.xproj", "{E60B79F6-FE71-44E0-BE88-BFA269378EDB}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {457E0B9B-F6A4-42C6-BFAE-6F8C71D1F435}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {457E0B9B-F6A4-42C6-BFAE-6F8C71D1F435}.Debug|Any CPU.Build.0 = Debug|Any CPU + {457E0B9B-F6A4-42C6-BFAE-6F8C71D1F435}.Release|Any CPU.ActiveCfg = Release|Any CPU + {457E0B9B-F6A4-42C6-BFAE-6F8C71D1F435}.Release|Any CPU.Build.0 = Release|Any CPU + {8901F2FD-F98B-484B-A20A-7844A39C7458}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {8901F2FD-F98B-484B-A20A-7844A39C7458}.Debug|Any CPU.Build.0 = Debug|Any CPU + {8901F2FD-F98B-484B-A20A-7844A39C7458}.Release|Any CPU.ActiveCfg = Release|Any CPU + {8901F2FD-F98B-484B-A20A-7844A39C7458}.Release|Any CPU.Build.0 = Release|Any CPU + {E60B79F6-FE71-44E0-BE88-BFA269378EDB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {E60B79F6-FE71-44E0-BE88-BFA269378EDB}.Debug|Any CPU.Build.0 = Debug|Any CPU + {E60B79F6-FE71-44E0-BE88-BFA269378EDB}.Release|Any CPU.ActiveCfg = Release|Any CPU + {E60B79F6-FE71-44E0-BE88-BFA269378EDB}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(NestedProjects) = preSolution + {457E0B9B-F6A4-42C6-BFAE-6F8C71D1F435} = {580E3446-6579-4414-9875-970849E635E5} + {8901F2FD-F98B-484B-A20A-7844A39C7458} = {742442F2-CAE7-4DC8-BD73-8C54C0005A53} + {E60B79F6-FE71-44E0-BE88-BFA269378EDB} = {580E3446-6579-4414-9875-970849E635E5} + EndGlobalSection +EndGlobal diff --git a/LICENSE b/LICENSE index 8a7361b..7f57282 100644 --- a/LICENSE +++ b/LICENSE @@ -1,6 +1,6 @@ The MIT License (MIT) -Copyright (c) 2014 Henk Mollema +Copyright (c) 2016 Henk Mollema Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/NuGet.Config b/NuGet.Config new file mode 100644 index 0000000..7604d00 --- /dev/null +++ b/NuGet.Config @@ -0,0 +1,7 @@ + + + + + + + diff --git a/README.md b/README.md index 0726acf..abfe340 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,9 @@ [Dapper.FluentMap](http://henkmollema.github.io/Dapper-FluentMap) ================ -[![Build status](https://ci.appveyor.com/api/projects/status/x6grw3cjuyud9c76/branch/master?svg=true)](https://ci.appveyor.com/project/henkmollema/dapper-fluentmap/branch/master) +[![Build status](https://ci.appveyor.com/api/projects/status/x6grw3cjuyud9c76?svg=true)](https://ci.appveyor.com/project/henkmollema/dapper-fluentmap) +[![NuGet Version](http://img.shields.io/nuget/v/Dapper.FluentMap.svg?style=flat)](https://www.nuget.org/packages/Dapper.FluentMap/ "NuGet version") +[![NuGet Downloads](http://img.shields.io/nuget/dt/Dapper.FluentMap.svg?style=flat)](https://www.nuget.org/packages/Dapper.FluentMap/) ### Introduction @@ -9,8 +11,8 @@ This [Dapper](https://github.com/StackExchange/dapper-dot-net) extension allows
-### Download using NuGet -#### `PM> Install-Package Dapper.FluentMap` +### Download +[![Download Dapper.FluentMap on NuGet](http://i.imgur.com/Rs483do.png "Download Dapper.FluentMap on NuGet")](https://www.nuget.org/packages/Dapper.FluentMap)
diff --git a/appveyor.yml b/appveyor.yml new file mode 100644 index 0000000..3fab83e --- /dev/null +++ b/appveyor.yml @@ -0,0 +1,7 @@ +init: + - git config --global core.autocrlf true +build_script: + - build.cmd verify +clone_depth: 1 +test: off +deploy: off \ No newline at end of file diff --git a/build.cmd b/build.cmd new file mode 100644 index 0000000..7d4894c --- /dev/null +++ b/build.cmd @@ -0,0 +1,2 @@ +@ECHO OFF +PowerShell -NoProfile -NoLogo -ExecutionPolicy unrestricted -Command "[System.Threading.Thread]::CurrentThread.CurrentCulture = ''; [System.Threading.Thread]::CurrentThread.CurrentUICulture = '';& '%~dp0build.ps1' %*; exit $LASTEXITCODE" \ No newline at end of file diff --git a/build.ps1 b/build.ps1 new file mode 100644 index 0000000..8f2f996 --- /dev/null +++ b/build.ps1 @@ -0,0 +1,67 @@ +$ErrorActionPreference = "Stop" + +function DownloadWithRetry([string] $url, [string] $downloadLocation, [int] $retries) +{ + while($true) + { + try + { + Invoke-WebRequest $url -OutFile $downloadLocation + break + } + catch + { + $exceptionMessage = $_.Exception.Message + Write-Host "Failed to download '$url': $exceptionMessage" + if ($retries -gt 0) { + $retries-- + Write-Host "Waiting 10 seconds before retrying. Retries left: $retries" + Start-Sleep -Seconds 10 + + } + else + { + $exception = $_.Exception + throw $exception + } + } + } +} + +cd $PSScriptRoot + +$repoFolder = $PSScriptRoot +$env:REPO_FOLDER = $repoFolder + +$koreBuildZip="https://github.com/aspnet/KoreBuild/archive/dev.zip" +if ($env:KOREBUILD_ZIP) +{ + $koreBuildZip=$env:KOREBUILD_ZIP +} + +$buildFolder = ".build" +$buildFile="$buildFolder\KoreBuild.ps1" + +if (!(Test-Path $buildFolder)) { + Write-Host "Downloading KoreBuild from $koreBuildZip" + + $tempFolder=$env:TEMP + "\KoreBuild-" + [guid]::NewGuid() + New-Item -Path "$tempFolder" -Type directory | Out-Null + + $localZipFile="$tempFolder\korebuild.zip" + + DownloadWithRetry -url $koreBuildZip -downloadLocation $localZipFile -retries 6 + + Add-Type -AssemblyName System.IO.Compression.FileSystem + [System.IO.Compression.ZipFile]::ExtractToDirectory($localZipFile, $tempFolder) + + New-Item -Path "$buildFolder" -Type directory | Out-Null + copy-item "$tempFolder\**\build\*" $buildFolder -Recurse + + # Cleanup + if (Test-Path $tempFolder) { + Remove-Item -Recurse -Force $tempFolder + } +} + +&"$buildFile" $args \ No newline at end of file diff --git a/build.sh b/build.sh new file mode 100755 index 0000000..f420810 --- /dev/null +++ b/build.sh @@ -0,0 +1,46 @@ +#!/usr/bin/env bash +repoFolder="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" +cd $repoFolder + +koreBuildZip="https://github.com/aspnet/KoreBuild/archive/dev.zip" +if [ ! -z $KOREBUILD_ZIP ]; then + koreBuildZip=$KOREBUILD_ZIP +fi + +buildFolder=".build" +buildFile="$buildFolder/KoreBuild.sh" + +if test ! -d $buildFolder; then + echo "Downloading KoreBuild from $koreBuildZip" + + tempFolder="/tmp/KoreBuild-$(uuidgen)" + mkdir $tempFolder + + localZipFile="$tempFolder/korebuild.zip" + + retries=6 + until (wget -O $localZipFile $koreBuildZip 2>/dev/null || curl -o $localZipFile --location $koreBuildZip 2>/dev/null) + do + echo "Failed to download '$koreBuildZip'" + if [ "$retries" -le 0 ]; then + exit 1 + fi + retries=$((retries - 1)) + echo "Waiting 10 seconds before retrying. Retries left: $retries" + sleep 10s + done + + unzip -q -d $tempFolder $localZipFile + + mkdir $buildFolder + cp -r $tempFolder/**/build/** $buildFolder + + chmod +x $buildFile + + # Cleanup + if test ! -d $tempFolder; then + rm -rf $tempFolder + fi +fi + +$buildFile -r $repoFolder "$@" \ No newline at end of file diff --git a/examples/DapperFluentMapInitializer.cs b/examples/DapperFluentMapInitializer.cs deleted file mode 100644 index 68f6b0b..0000000 --- a/examples/DapperFluentMapInitializer.cs +++ /dev/null @@ -1,26 +0,0 @@ -using Dapper.FluentMap; - -namespace App -{ - public class DapperFluentMapInitializer - { - public static void Init() - { - FluentMapper.Intialize(config => - { - // Configure entities explicitly. - config.AddConvention() - .ForEntity() - .ForEntity; - - // Configure all entities in a certain assembly with an optional namespaces filter. - config.AddConvention() - .ForEntitiesInAssembly(typeof(Product).Assembly, "App.Domain.Model"); - - // Configure all entities in the current assembly with an optional namespaces filter. - config.AddConvention() - .ForEntitiesInCurrentAssembly("App.Domain.Model.Catalog", "App.Domain.Model.Order"); - }); - } - } -} diff --git a/examples/ProductMap.cs b/examples/ProductMap.cs deleted file mode 100644 index d530df3..0000000 --- a/examples/ProductMap.cs +++ /dev/null @@ -1,25 +0,0 @@ -using Dapper.FluentMap.Mapping; - -namespace App.Data.Mapping -{ - /// - /// Represents a manual mapping for the Product entity. - /// - public class ProductMap : EntityMap - { - public ProductMap() - { - // Map property 'Name' to column 'strName'. - Map(p => p.Name) - .ToColumn("strName"); - - // Map property 'Description' to 'strdescription', ignoring casing. - Map(p => p.Description) - .ToColumn("strdescription", caseSensitive: false); - - // Ignore the 'LastModified' property when mapping. - Map(p => p.LastModified) - .Ignore(); - } - } -} diff --git a/examples/PropertyTransformConvention.cs b/examples/PropertyTransformConvention.cs deleted file mode 100644 index a79c912..0000000 --- a/examples/PropertyTransformConvention.cs +++ /dev/null @@ -1,18 +0,0 @@ -using System.Text.RegularExpressions; -using Dapper.FluentMap.Conventions; - -namespace Dapper.FluentMap.TestConsole.Data.Mapping -{ - /// - /// Represents a convention which transforms property names to database column names. - /// - public class PropertyTransformConvention : Convention - { - public PropertyTransformConvention() - { - // Map 'UrlOptimizedName' to 'Url_Optimized_Name'. - 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"))); - } - } -} diff --git a/examples/TypePrefixConvention.cs b/examples/TypePrefixConvention.cs deleted file mode 100644 index d8a1955..0000000 --- a/examples/TypePrefixConvention.cs +++ /dev/null @@ -1,30 +0,0 @@ -using Dapper.FluentMap.Conventions; - -namespace App.Data.Mapping -{ - /// - /// Represents a convention which adds type prefixes to database column names. - /// - public class TypePrefixConvention : Convention - { - public TypePrefixConvention() - { - // Map all properties of type int and with the name 'id' to column 'autID'. - Properties() - .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() - .Configure(c => c.HasPrefix("str")); - - // Prefix all properties of type string with 'str' when mapping to column names. - Properties() - .Configure(c => c.HasPrefix("str")); - - // Prefix all properties of type int with 'int' when mapping to column names. - Properties() - .Configure(c => c.HasPrefix("int")); - } - } -} diff --git a/global.json b/global.json new file mode 100644 index 0000000..5e6422e --- /dev/null +++ b/global.json @@ -0,0 +1,3 @@ +{ + "projects": [ "src", "test" ] +} diff --git a/nuget/Dapper.FluentMap.1.0.0.nupkg b/nuget/Dapper.FluentMap.1.0.0.nupkg deleted file mode 100644 index fda7216d896a46460580a3d418a7fdb07645cb12..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7089 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↱qZ)Rfe6ma0`>A!_I91v?HgLE7f`qgNYZm?m6j3Z;U4 z&2SCsI$px@onLxv%@7iTZRT))YyN8IBG|wV^~Ls-7Z(@156mT#E2^3j**#O#>)Aw8 zy$qmjwKugJD?MB3noHKf^ksc4-rqQfLfa%upPRK0vo0RusX`es+qc3*7U-j`hMFF$ zceeLi_SE7AKShb-40B~Pr#caPrvfU%6X!eRI9*cx`k!bRAf8IZR?tYexooAr8dTEZ#Mr#bFUun=+f1$He?Lz-4B8 z>tWW+ji}D)HSES+1ysZ9_uVPMfm!Flu8Rtglo8hUXBG%N zjuo*fS!3G*CMDryVGOdm?3XJGLK=`QZAbFDJ-$k(Q{RkD`ua+btQL9)sQ4k4K2q5G z!Uk$_(KAA;Uq@itL$o#59E2{2+)rmIF;3*@2{BP|{(30i%NB0VPh{QB@^%QJ-_K6C z<+95I8()$=o7p{)o9OOL8jYTG$Z8M8kZ@Kn`{lHkQ#KAEJW9eAHbqM8!*ZgWZ%Ah( zj>$I5Cb^S8zks`5L+4LE<-;g_y&e4I!ALOc6!eM*fSs4fY4f?O_M;v;{b;wBp=#IE zQH;%G

ijD3>gaO@WF_-hVBs~ReRAfHuS(*sEEyYY?O$Y- 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 diff --git a/nuget/Dapper.FluentMap.1.1.0.nupkg b/nuget/Dapper.FluentMap.1.1.0.nupkg deleted file mode 100644 index e5620f2929cb179cfbeb7db495aec5af15c82a5b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13128 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 LdBBqW*U|q2Pzqn@ diff --git a/nuget/Dapper.FluentMap.1.1.1.nupkg b/nuget/Dapper.FluentMap.1.1.1.nupkg deleted file mode 100644 index 8969ffd830bd6cdffe367eff890eed224ac8336a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13297 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 b@!u7=ssijwj9v(}m-pbyd4P=P*Vg|7zg40a diff --git a/nuget/Dapper.FluentMap.1.3.1.nupkg b/nuget/Dapper.FluentMap.1.3.1.nupkg deleted file mode 100644 index 6a4632809741fd9d3a0eba9d404b376e10e42762..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14620 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 O29gtESisGH%>6&97}8t- diff --git a/nuget/Dapper.FluentMap.1.3.3.nupkg b/nuget/Dapper.FluentMap.1.3.3.nupkg deleted file mode 100644 index 28baaf25adae6abc32644a60771a88b5d2ccd4f1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 26115 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 Pa2N<1aJSe6K5hL!ac~c6 diff --git a/nuget/Dapper.FluentMap.1.4.0.nupkg b/nuget/Dapper.FluentMap.1.4.0.nupkg deleted file mode 100644 index d0fc5e7b48d7ad38dc4aafa321da481d9c249d0a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14502 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 N^LkB)=Ki(!e*g;~(bNC{ diff --git a/nuget/Dapper.FluentMap.Dommel.1.0.0.nupkg b/nuget/Dapper.FluentMap.Dommel.1.0.0.nupkg deleted file mode 100644 index 414e226032f7db00076692911b89bf8a017db665..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2637 zcmb_edr%Wc96l74K5VO4M#aK$<4p09yM#m`n8Z?pPt=H7oS|qhcN=n$d(7R&fTMLv zMkziDrM2~iRjYKWgUS?#T6J1mZDpu~I5Nf7KK|$^^o0dlaoVZfJ3PQQj~yz-nc}Wry=Uf`IJO6g>*ikQuO-S6sjhKLG;JOR~1X(0Ysi-WKj`a zkYq$Y0EX&9a0Wf4Po;QT;9Nj~1ip%v^8vIHl%19&Ad~YwULe4wv_#rPo(CRM@G25u z2z(K1C9=(Q8Zf6BS*O$FG^Mge0;e9Poc}aIiU*KpX-HFyCWlhv9q=JM!5@bEws&xdtE;CVp7)TDd~&j=mqC<%5ySX zn#AvKTxp)%Sz_Qi{=D*<5MQ!v!_mBYaqCUt#J>2Ki!YQ^G##Fo-A4Yp&vyGx0^X2N zv+#Psq)nZC^|jpHA7(~<$NT2AuJy-fKewoS(X7lJZ+~7nEn$+qZ_EhwY1I^>}K5c5gb0#@) z@h4BNApWTJ@2U7fx?h%&dD8xT_wwW}qH^2f_msICC;jz%?V7Z#xR;KJT`wg1r`Koi z=G3H&&#vW?vr>MlXsWvR!O7_IGi=fy<>e)Tb zpI%>?cve$u%*n}X=4b5MboF@sSFL64(_;0u zeJ#_g-hQOO+Or+^7sR%nn{#<{luCk-iZuM(UATM%hN*1@BEhiJb12?CycVhF$q_tG zy<(KkGC}o_ys}4AAC{qj2k=M;6v{vvC?XgOfy{>lEIdJb6O1fUxFD?0=OcYa4H(Ip zfm*XPYo(@qI!;g^EifQ}AIx}IVH{K`Y!;SDXJkM_QMS2(P{@lOG$GnTh5fI_us~sC zPEr-x7I}1WPy~UX$~%sv8Sm9YT=7bhC__?%3Qt$zI2NrL=i-3;09rs#wY0D>OTa;F z$UsQFh3e~C3PG_?lv%~bYQl`WG-1YhTEbaPnJrW>L>(G(&;wLCM!yxWvj8yAw#>T# zK-|&mC3t3$>)~w@X272l(wj7N25mQu+X0N zzw<<1ZNhFqy@`W)U3g*!628de)BgeySww%y49A)ujSatmMh@Sf*WttCW3Yi(?pQKv Rv>FzTzM1GSbjGN?e*qfzl~Moz diff --git a/nuget/Dapper.FluentMap.Dommel.1.0.1.nupkg b/nuget/Dapper.FluentMap.Dommel.1.0.1.nupkg deleted file mode 100644 index fa47779e9651fa1f01fa86818fff789e4200fca8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2651 zcmb_e3rrM87+&b9h(uAj7Nfy+W0cg~&fR&yLGKQUAQi;`B5Dolx;uL;?5n$bcW7*U zR8(pOwMwkjq*|+0+p1|3sM=zarnEIG=_6{T^+hUuiKX?G(6qD5ad(_TY~yWalezu> zZ~mG2=KH2-)>Ec$|nQ6R4ZQh($7lCjh`lZ?>lSLexQ zS9Z0)<9?{9oFuvl8)+qQDAE$ciC#D1(^!j>$o9BOAWvy1LapFr6-Oze>Lw~QP0j*9 zr7NI7siY)B5q)7LMW8g)RlGo^=qkz!f!%6N2dJ7b2GJK2FI_IfhY$shRwPwoHIkNu zAQ-9(!P%_9ngIk#uUn5&I%=ocezJaAs8=UzcL?x4mLJec|2M zl{-HZRlq5*%36Rc5ZdI?{8(wAEd=xlQzU%qZB>F{XLl*XD&Y{#@Jm#_#OuXKwGAH}l2K zEa|#ma=fg0=uMF0dudsA^Im&{)Y@v+UYK-4I#p0`YSZkxlA`Ada@baTeS7la2kxrU zBh43%4=d@qID2r~k+Wm{_1&Pe7ED=x;n(iHwdYO6C6<&u^UW6}ogQI*IZ!ycczP^` z>8%*i)P#!KGZm@)}W{hKaNBj?@>xz^~tiNXruuZnXbce z3|cde<)HEqT2N_?w1_ZQ&|5snT1cA<^mbiUaCtyd7}diVl8v*5Wa9!QzzyKdDWvD4dV#O6iQ zB@r!zwnR4}wVc!)@rk&mf%iY%lJ2R=qUkjux6Fks<>NIp;ozRR3EkcaJXm~>fug14 zIohyU;1`)FPqqZlt$r~GTk#Y$U&A3DF+{Iz_B)6~YY_P_^3O+P_nK0_*#ndq<(i=) zfw8D)M`L0wSa?tS-hiSnIuZAwp2Yr~FETL)iCy%O>3f}sE~2kYMq({RzWT&PGkW;G dyp9~69D+TH0J~l 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 GXa5K4!yk!c_ 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 diff --git a/src/Dapper.FluentMap.Dommel/Dapper.FluentMap.Dommel.csproj b/src/Dapper.FluentMap.Dommel/Dapper.FluentMap.Dommel.csproj deleted file mode 100644 index 4235577..0000000 --- a/src/Dapper.FluentMap.Dommel/Dapper.FluentMap.Dommel.csproj +++ /dev/null @@ -1,81 +0,0 @@ - - - - - Debug - AnyCPU - {74FD33BB-78DC-4170-9871-DEBE8FF71646} - Library - Properties - Dapper.FluentMap.Dommel - Dapper.FluentMap.Dommel - v4.0 - 512 - - - - true - full - false - bin\Debug\ - DEBUG;TRACE - prompt - 4 - - - - - pdbonly - true - bin\Release\ - TRACE - prompt - 4 - bin\Release\Dapper.FluentMap.Dommel.XML - - - - ..\packages\Dapper.1.50.0-beta8\lib\net40\Dapper.dll - True - - - ..\packages\Dommel.1.5.0\lib\net40\Dommel.dll - True - - - - - - - - - - - - - - - - - - - - - {a04cca46-b05d-45d7-8adc-5cef70d26b60} - Dapper.FluentMap - - - - - Designer - - - - - \ No newline at end of file diff --git a/src/Dapper.FluentMap.Dommel/Dapper.FluentMap.Dommel.xproj b/src/Dapper.FluentMap.Dommel/Dapper.FluentMap.Dommel.xproj new file mode 100644 index 0000000..42fec3b --- /dev/null +++ b/src/Dapper.FluentMap.Dommel/Dapper.FluentMap.Dommel.xproj @@ -0,0 +1,21 @@ + + + + 14.0 + $(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion) + + + + + e60b79f6-fe71-44e0-be88-bfa269378edb + Dapper.FluentMap.Dommel + .\obj + .\bin\ + v4.5.2 + + + + 2.0 + + + diff --git a/src/Dapper.FluentMap.Dommel/Mapping/DommelEntityMap.cs b/src/Dapper.FluentMap.Dommel/Mapping/DommelEntityMap.cs index da0a368..d6164cf 100644 --- a/src/Dapper.FluentMap.Dommel/Mapping/DommelEntityMap.cs +++ b/src/Dapper.FluentMap.Dommel/Mapping/DommelEntityMap.cs @@ -31,6 +31,9 @@ protected override DommelPropertyMap GetPropertyMap(PropertyInfo info) return new DommelPropertyMap(info); } + ///

+ /// Gets the table name for this entity map. + /// public string TableName { get; private set; } /// diff --git a/src/Dapper.FluentMap.Dommel/Mapping/DommelPropertyMap.cs b/src/Dapper.FluentMap.Dommel/Mapping/DommelPropertyMap.cs index b85c8f2..1019c9c 100644 --- a/src/Dapper.FluentMap.Dommel/Mapping/DommelPropertyMap.cs +++ b/src/Dapper.FluentMap.Dommel/Mapping/DommelPropertyMap.cs @@ -9,7 +9,7 @@ namespace Dapper.FluentMap.Dommel.Mapping public class DommelPropertyMap : PropertyMapBase, IPropertyMap { /// - /// Initializes a new instance of the class + /// Initializes a new instance of the class /// with the specified object. /// /// The information about the property. @@ -18,6 +18,9 @@ public DommelPropertyMap(PropertyInfo info) { } + /// + /// Gets a value indicating whether this property is a primary key. + /// public bool Key { get; private set; } /// diff --git a/src/Dapper.FluentMap.Dommel/Resolvers/DommelColumnNameResolver.cs b/src/Dapper.FluentMap.Dommel/Resolvers/DommelColumnNameResolver.cs index 00d26eb..94c3813 100644 --- a/src/Dapper.FluentMap.Dommel/Resolvers/DommelColumnNameResolver.cs +++ b/src/Dapper.FluentMap.Dommel/Resolvers/DommelColumnNameResolver.cs @@ -1,36 +1,37 @@ -using System.Linq; -using System.Reflection; -using Dapper.FluentMap.Dommel.Mapping; -using Dapper.FluentMap.Mapping; -using Dommel; - -namespace Dapper.FluentMap.Dommel.Resolvers -{ - /// - /// Implements the interface by using the configured mapping. - /// - public class DommelColumnNameResolver : DommelMapper.IColumnNameResolver - { - public string ResolveColumnName(PropertyInfo propertyInfo) - { - if (propertyInfo.DeclaringType != null) - { - IEntityMap entityMap; - if (FluentMapper.EntityMaps.TryGetValue(propertyInfo.DeclaringType, out entityMap)) - { - var mapping = entityMap as IDommelEntityMap; - if (mapping != null) - { - var propertyMaps = entityMap.PropertyMaps.Where(m => m.PropertyInfo.Name == propertyInfo.Name).ToList(); - if (propertyMaps.Count == 1) - { - return propertyMaps[0].ColumnName; - } - } - } - } - - return DommelMapper.Resolvers.Default.ColumnNameResolver.ResolveColumnName(propertyInfo); - } - } -} \ No newline at end of file +using System.Linq; +using System.Reflection; +using Dapper.FluentMap.Dommel.Mapping; +using Dapper.FluentMap.Mapping; +using Dommel; + +namespace Dapper.FluentMap.Dommel.Resolvers +{ + /// + /// Implements the interface by using the configured mapping. + /// + public class DommelColumnNameResolver : DommelMapper.IColumnNameResolver + { + /// + public string ResolveColumnName(PropertyInfo propertyInfo) + { + if (propertyInfo.DeclaringType != null) + { + IEntityMap entityMap; + if (FluentMapper.EntityMaps.TryGetValue(propertyInfo.DeclaringType, out entityMap)) + { + var mapping = entityMap as IDommelEntityMap; + if (mapping != null) + { + var propertyMaps = entityMap.PropertyMaps.Where(m => m.PropertyInfo.Name == propertyInfo.Name).ToList(); + if (propertyMaps.Count == 1) + { + return propertyMaps[0].ColumnName; + } + } + } + } + + return DommelMapper.Resolvers.Default.ColumnNameResolver.ResolveColumnName(propertyInfo); + } + } +} diff --git a/src/Dapper.FluentMap.Dommel/Resolvers/DommelKeyPropertyResolver.cs b/src/Dapper.FluentMap.Dommel/Resolvers/DommelKeyPropertyResolver.cs index 6174696..4cfd243 100644 --- a/src/Dapper.FluentMap.Dommel/Resolvers/DommelKeyPropertyResolver.cs +++ b/src/Dapper.FluentMap.Dommel/Resolvers/DommelKeyPropertyResolver.cs @@ -1,45 +1,46 @@ -using System; -using System.Linq; -using System.Reflection; -using Dapper.FluentMap.Dommel.Mapping; -using Dapper.FluentMap.Mapping; -using Dommel; - -namespace Dapper.FluentMap.Dommel.Resolvers -{ - /// - /// Implements the interface by using the configured mapping. - /// - public class DommelKeyPropertyResolver : DommelMapper.IKeyPropertyResolver - { - public PropertyInfo ResolveKeyProperty(Type type) - { - IEntityMap entityMap; - if (FluentMapper.EntityMaps.TryGetValue(type, out entityMap)) - { - var mapping = entityMap as IDommelEntityMap; - if (mapping != null) - { - var keyPropertyMaps = entityMap.PropertyMaps.OfType().Where(e => e.Key).ToList(); - - if (keyPropertyMaps.Count == 1) - { - return keyPropertyMaps[0].PropertyInfo; - } - - if (keyPropertyMaps.Count > 1) - { - string msg = string.Format("Found multiple key properties on type '{0}'. This is not yet supported. The following key properties were found:{1}{2}", - type.FullName, - Environment.NewLine, - string.Join(Environment.NewLine, keyPropertyMaps.Select(t => t.PropertyInfo.Name))); - - throw new Exception(msg); - } - } - } - - return DommelMapper.Resolvers.Default.KeyPropertyResolver.ResolveKeyProperty(type); - } - } -} \ No newline at end of file +using System; +using System.Linq; +using System.Reflection; +using Dapper.FluentMap.Dommel.Mapping; +using Dapper.FluentMap.Mapping; +using Dommel; + +namespace Dapper.FluentMap.Dommel.Resolvers +{ + /// + /// Implements the interface by using the configured mapping. + /// + public class DommelKeyPropertyResolver : DommelMapper.IKeyPropertyResolver + { + /// + public PropertyInfo ResolveKeyProperty(Type type) + { + IEntityMap entityMap; + if (FluentMapper.EntityMaps.TryGetValue(type, out entityMap)) + { + var mapping = entityMap as IDommelEntityMap; + if (mapping != null) + { + var keyPropertyMaps = entityMap.PropertyMaps.OfType().Where(e => e.Key).ToList(); + + if (keyPropertyMaps.Count == 1) + { + return keyPropertyMaps[0].PropertyInfo; + } + + if (keyPropertyMaps.Count > 1) + { + var msg = string.Format("Found multiple key properties on type '{0}'. This is not yet supported. The following key properties were found:{1}{2}", + type.FullName, + Environment.NewLine, + string.Join(Environment.NewLine, keyPropertyMaps.Select(t => t.PropertyInfo.Name))); + + throw new Exception(msg); + } + } + } + + return DommelMapper.Resolvers.Default.KeyPropertyResolver.ResolveKeyProperty(type); + } + } +} diff --git a/src/Dapper.FluentMap.Dommel/Resolvers/DommelPropertyResolver.cs b/src/Dapper.FluentMap.Dommel/Resolvers/DommelPropertyResolver.cs index 8c61ca2..2e61ddc 100644 --- a/src/Dapper.FluentMap.Dommel/Resolvers/DommelPropertyResolver.cs +++ b/src/Dapper.FluentMap.Dommel/Resolvers/DommelPropertyResolver.cs @@ -1,49 +1,55 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Reflection; -using Dapper.FluentMap.Mapping; -using Dommel; - -namespace Dapper.FluentMap.Dommel.Resolvers -{ - public class DommelPropertyResolver : DommelMapper.PropertyResolverBase - { - protected override IEnumerable FilterComplexTypes(IEnumerable properties) - { - foreach (var propertyInfo in properties) - { - Type type = propertyInfo.PropertyType; - type = Nullable.GetUnderlyingType(type) ?? type; - if (type.IsPrimitive || type.IsEnum || PrimitiveTypes.Contains(type)) - { - yield return propertyInfo; - } - } - } - - public override IEnumerable ResolveProperties(Type type) - { - IEntityMap entityMap; - if (FluentMapper.EntityMaps.TryGetValue(type, out entityMap)) - { - foreach (var property in FilterComplexTypes(type.GetProperties())) - { - // Determine whether the property should be ignored. - var propertyMap = entityMap.PropertyMaps.FirstOrDefault(p => p.PropertyInfo.Name == property.Name); - if (propertyMap == null || !propertyMap.Ignored) - { - yield return property; - } - } - } - else - { - foreach (var property in DommelMapper.Resolvers.Default.PropertyResolver.ResolveProperties(type)) - { - yield return property; - } - } - } - } -} \ No newline at end of file +using System; +using System.Collections.Generic; +using System.Linq; +using System.Reflection; +using Dapper.FluentMap.Mapping; +using Dommel; + +namespace Dapper.FluentMap.Dommel.Resolvers +{ + /// + /// Implements the interface by using the configured mapping. + /// + public class DommelPropertyResolver : DommelMapper.PropertyResolverBase + { + /// + protected override IEnumerable FilterComplexTypes(IEnumerable properties) + { + foreach (var propertyInfo in properties) + { + var type = propertyInfo.PropertyType; + type = Nullable.GetUnderlyingType(type) ?? type; + + if (type.GetTypeInfo().IsPrimitive || type.GetTypeInfo().IsEnum || PrimitiveTypes.Contains(type)) + { + yield return propertyInfo; + } + } + } + + /// + public override IEnumerable ResolveProperties(Type type) + { + IEntityMap entityMap; + if (FluentMapper.EntityMaps.TryGetValue(type, out entityMap)) + { + foreach (var property in FilterComplexTypes(type.GetProperties())) + { + // Determine whether the property should be ignored. + var propertyMap = entityMap.PropertyMaps.FirstOrDefault(p => p.PropertyInfo.Name == property.Name); + if (propertyMap == null || !propertyMap.Ignored) + { + yield return property; + } + } + } + else + { + foreach (var property in DommelMapper.Resolvers.Default.PropertyResolver.ResolveProperties(type)) + { + yield return property; + } + } + } + } +} diff --git a/src/Dapper.FluentMap.Dommel/Resolvers/DommelTableNameResolver.cs b/src/Dapper.FluentMap.Dommel/Resolvers/DommelTableNameResolver.cs index 441f13c..e5b305b 100644 --- a/src/Dapper.FluentMap.Dommel/Resolvers/DommelTableNameResolver.cs +++ b/src/Dapper.FluentMap.Dommel/Resolvers/DommelTableNameResolver.cs @@ -1,29 +1,30 @@ -using System; -using Dapper.FluentMap.Dommel.Mapping; -using Dapper.FluentMap.Mapping; -using Dommel; - -namespace Dapper.FluentMap.Dommel.Resolvers -{ - /// - /// Implements the interface by using the configured mapping. - /// - public class DommelTableNameResolver : DommelMapper.ITableNameResolver - { - public string ResolveTableName(Type type) - { - IEntityMap entityMap; - if (FluentMapper.EntityMaps.TryGetValue(type, out entityMap)) - { - var mapping = entityMap as IDommelEntityMap; - - if (mapping != null) - { - return mapping.TableName; - } - } - - return DommelMapper.Resolvers.Default.TableNameResolver.ResolveTableName(type); - } - } -} \ No newline at end of file +using System; +using Dapper.FluentMap.Dommel.Mapping; +using Dapper.FluentMap.Mapping; +using Dommel; + +namespace Dapper.FluentMap.Dommel.Resolvers +{ + /// + /// Implements the interface by using the configured mapping. + /// + public class DommelTableNameResolver : DommelMapper.ITableNameResolver + { + /// + public string ResolveTableName(Type type) + { + IEntityMap entityMap; + if (FluentMapper.EntityMaps.TryGetValue(type, out entityMap)) + { + var mapping = entityMap as IDommelEntityMap; + + if (mapping != null) + { + return mapping.TableName; + } + } + + return DommelMapper.Resolvers.Default.TableNameResolver.ResolveTableName(type); + } + } +} diff --git a/src/Dapper.FluentMap.Dommel/packages.config b/src/Dapper.FluentMap.Dommel/packages.config deleted file mode 100644 index 8caf832..0000000 --- a/src/Dapper.FluentMap.Dommel/packages.config +++ /dev/null @@ -1,5 +0,0 @@ - - - - - \ No newline at end of file diff --git a/src/Dapper.FluentMap.Dommel/project.json b/src/Dapper.FluentMap.Dommel/project.json new file mode 100644 index 0000000..880cd24 --- /dev/null +++ b/src/Dapper.FluentMap.Dommel/project.json @@ -0,0 +1,26 @@ +{ + "version": "1.4.0", + "description": "Dapper.FluentMap extension for Dommel support.", + "authors": [ "Henk Mollema" ], + "copyright": "Copyright © Henk Mollema 2016", + "packOptions": { + "licenseUrl": "https://github.com/henkmollema/Dapper-FluentMap/blob/master/LICENSE", + "owners": [ "Henk Mollema" ], + "projectUrl": "https://github.com/henkmollema/Dapper-FluentMap", + "tags": [ "dapper", "fluentmap", "dommel" ] + }, + + "dependencies": { + "Dapper.FluentMap": "1.5.0", + "Dommel": "1.6.0" + }, + + "frameworks": { + "net451": { }, + "netstandard1.3": { } + }, + + "buildOptions": { + "xmlDoc": true + } +} diff --git a/src/Dapper.FluentMap.Tests/ConventionTests.cs b/src/Dapper.FluentMap.Tests/ConventionTests.cs deleted file mode 100644 index e2b4f20..0000000 --- a/src/Dapper.FluentMap.Tests/ConventionTests.cs +++ /dev/null @@ -1,38 +0,0 @@ -using System.Diagnostics; -using Dapper.FluentMap.Conventions; -using Microsoft.VisualStudio.TestTools.UnitTesting; - -namespace Dapper.FluentMap.Tests -{ - [TestClass] - public class ConventionTests - { - [TestMethod] - public void ShouldMapEntitiesInCurrentAssembly() - { - PreTest(); - FluentMapper.Initialize(c => c.AddConvention() - .ForEntitiesInCurrentAssembly()); - - Debug.Assert(FluentMapper.TypeConventions.ContainsKey(typeof (TestEntity))); - var map = FluentMapper.TypeConventions[typeof (TestEntity)]; - Debug.Assert(map[0] is TestConvention); - } - - private class TestConvention : Convention - { - public TestConvention() - { - Properties(). - Where(p => p.Name.ToLower() == "id") - .Configure(c => c.HasColumnName("autID")); - } - } - - private static void PreTest() - { - FluentMapper.EntityMaps.Clear(); - FluentMapper.TypeConventions.Clear(); - } - } -} diff --git a/src/Dapper.FluentMap.Tests/Dapper.FluentMap.Tests.csproj b/src/Dapper.FluentMap.Tests/Dapper.FluentMap.Tests.csproj deleted file mode 100644 index f40743d..0000000 --- a/src/Dapper.FluentMap.Tests/Dapper.FluentMap.Tests.csproj +++ /dev/null @@ -1,102 +0,0 @@ - - - - Debug - AnyCPU - {CE214E29-ADBE-43D3-846E-97AED03132CC} - Library - Properties - Dapper.FluentMap.Tests - Dapper.FluentMap.Tests - v4.5 - 512 - {3AC096D0-A1C2-E12C-1390-A8335801FDAB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} - 10.0 - $(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion) - $(ProgramFiles)\Common Files\microsoft shared\VSTT\$(VisualStudioVersion)\UITestExtensionPackages - False - UnitTest - - - true - full - false - bin\Debug\ - DEBUG;TRACE - prompt - 4 - - - pdbonly - true - bin\Release\ - TRACE - prompt - 4 - - - - ..\packages\Dapper.1.38\lib\net45\Dapper.dll - - - - - - - - - - - - - - - - - - - - - - - - - {74fd33bb-78dc-4170-9871-debe8ff71646} - Dapper.FluentMap.Dommel - - - {a04cca46-b05d-45d7-8adc-5cef70d26b60} - Dapper.FluentMap - - - - - - - - - - False - - - False - - - False - - - False - - - - - - - - \ No newline at end of file diff --git a/src/Dapper.FluentMap.Tests/Properties/AssemblyInfo.cs b/src/Dapper.FluentMap.Tests/Properties/AssemblyInfo.cs deleted file mode 100644 index a946a40..0000000 --- a/src/Dapper.FluentMap.Tests/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,36 +0,0 @@ -using System.Reflection; -using System.Runtime.CompilerServices; -using System.Runtime.InteropServices; - -// General Information about an assembly is controlled through the following -// set of attributes. Change these attribute values to modify the information -// associated with an assembly. -[assembly: AssemblyTitle("Dapper.FluentMap.Tests")] -[assembly: AssemblyDescription("")] -[assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("")] -[assembly: AssemblyProduct("Dapper.FluentMap.Tests")] -[assembly: AssemblyCopyright("Copyright © 2014")] -[assembly: AssemblyTrademark("")] -[assembly: AssemblyCulture("")] - -// Setting ComVisible to false makes the types in this assembly not visible -// to COM components. If you need to access a type in this assembly from -// COM, set the ComVisible attribute to true on that type. -[assembly: ComVisible(false)] - -// The following GUID is for the ID of the typelib if this project is exposed to COM -[assembly: Guid("6a41b3de-965a-4d13-8694-e3b6a8218021")] - -// Version information for an assembly consists of the following four values: -// -// Major Version -// Minor Version -// Build Number -// Revision -// -// You can specify all the values or you can default the Build and Revision Numbers -// by using the '*' as shown below: -// [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("1.0.0.0")] -[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/src/Dapper.FluentMap.Tests/packages.config b/src/Dapper.FluentMap.Tests/packages.config deleted file mode 100644 index 8002c85..0000000 --- a/src/Dapper.FluentMap.Tests/packages.config +++ /dev/null @@ -1,4 +0,0 @@ - - - - \ No newline at end of file diff --git a/src/Dapper.FluentMap.sln b/src/Dapper.FluentMap.sln deleted file mode 100644 index ef514c2..0000000 --- a/src/Dapper.FluentMap.sln +++ /dev/null @@ -1,34 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio 14 -VisualStudioVersion = 14.0.23107.0 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Dapper.FluentMap", "Dapper.FluentMap\Dapper.FluentMap.csproj", "{A04CCA46-B05D-45D7-8ADC-5CEF70D26B60}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Dapper.FluentMap.Dommel", "Dapper.FluentMap.Dommel\Dapper.FluentMap.Dommel.csproj", "{74FD33BB-78DC-4170-9871-DEBE8FF71646}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Dapper.FluentMap.Tests", "Dapper.FluentMap.Tests\Dapper.FluentMap.Tests.csproj", "{CE214E29-ADBE-43D3-846E-97AED03132CC}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {A04CCA46-B05D-45D7-8ADC-5CEF70D26B60}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {A04CCA46-B05D-45D7-8ADC-5CEF70D26B60}.Debug|Any CPU.Build.0 = Debug|Any CPU - {A04CCA46-B05D-45D7-8ADC-5CEF70D26B60}.Release|Any CPU.ActiveCfg = Release|Any CPU - {A04CCA46-B05D-45D7-8ADC-5CEF70D26B60}.Release|Any CPU.Build.0 = Release|Any CPU - {74FD33BB-78DC-4170-9871-DEBE8FF71646}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {74FD33BB-78DC-4170-9871-DEBE8FF71646}.Debug|Any CPU.Build.0 = Debug|Any CPU - {74FD33BB-78DC-4170-9871-DEBE8FF71646}.Release|Any CPU.ActiveCfg = Release|Any CPU - {74FD33BB-78DC-4170-9871-DEBE8FF71646}.Release|Any CPU.Build.0 = Release|Any CPU - {CE214E29-ADBE-43D3-846E-97AED03132CC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {CE214E29-ADBE-43D3-846E-97AED03132CC}.Debug|Any CPU.Build.0 = Debug|Any CPU - {CE214E29-ADBE-43D3-846E-97AED03132CC}.Release|Any CPU.ActiveCfg = Release|Any CPU - {CE214E29-ADBE-43D3-846E-97AED03132CC}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection -EndGlobal diff --git a/src/Dapper.FluentMap/Configuration/FluentConventionConfiguration.cs b/src/Dapper.FluentMap/Configuration/FluentConventionConfiguration.cs index 5ae4481..328a475 100644 --- a/src/Dapper.FluentMap/Configuration/FluentConventionConfiguration.cs +++ b/src/Dapper.FluentMap/Configuration/FluentConventionConfiguration.cs @@ -2,7 +2,6 @@ using System.ComponentModel; using System.Linq; using System.Reflection; - using Dapper.FluentMap.Conventions; using Dapper.FluentMap.Mapping; using Dapper.FluentMap.Utils; @@ -33,7 +32,7 @@ public FluentConventionConfiguration(Convention convention) /// The current instance of . public FluentConventionConfiguration ForEntity() { - Type type = typeof(T); + var type = typeof(T); MapProperties(type); FluentMapper.TypeConventions.AddOrUpdate(type, _convention); @@ -41,17 +40,27 @@ public FluentConventionConfiguration ForEntity() return this; } +#if !COREFX /// /// Configures the current convention for all the entities in current assembly filtered by the specified namespaces. /// - /// An array of namespaces which filter the types in the current assembly. This parameter is optional. + /// + /// An array of namespaces which filter the types in the current assembly. + /// This parameter is optional. + /// /// The current instance of . public FluentConventionConfiguration ForEntitiesInCurrentAssembly(params string[] namespaces) { - foreach (var type in Assembly.GetCallingAssembly() - .GetExportedTypes() - .Where(type => namespaces.Length == 0 || namespaces.Any(n => type.Namespace == n))) + foreach (var type in Assembly.GetCallingAssembly().GetExportedTypes()) { + if (namespaces != null && + namespaces.Length > 0 && + namespaces.All(n => n != type.Namespace)) + { + // Filter by namespace. + continue; + } + MapProperties(type); FluentMapper.TypeConventions.AddOrUpdate(type, _convention); FluentMapper.AddConventionTypeMap(type); @@ -59,18 +68,29 @@ public FluentConventionConfiguration ForEntitiesInCurrentAssembly(params string[ return this; } +#endif /// /// Configures the current convention for all entities in the specified assembly filtered by the specified namespaces. /// /// The assembly to scan for entities. - /// An array of namespaces which filter the types in . This parameter is optional. + /// + /// An array of namespaces which filter the types in . + /// This parameter is optional. + /// /// The current instance of . public FluentConventionConfiguration ForEntitiesInAssembly(Assembly assembly, params string[] namespaces) { - foreach (var type in assembly.GetExportedTypes() - .Where(type => namespaces.Any(n => type.Namespace == n))) + foreach (var type in assembly.GetExportedTypes()) { + if (namespaces != null && + namespaces.Length > 0 && + namespaces.All(n => n != type.Namespace)) + { + // Filter by namespace. + continue; + } + MapProperties(type); FluentMapper.TypeConventions.AddOrUpdate(type, _convention); FluentMapper.AddConventionTypeMap(type); diff --git a/src/Dapper.FluentMap/Configuration/FluentMapConfiguration.cs b/src/Dapper.FluentMap/Configuration/FluentMapConfiguration.cs index 321ad29..16e6f42 100644 --- a/src/Dapper.FluentMap/Configuration/FluentMapConfiguration.cs +++ b/src/Dapper.FluentMap/Configuration/FluentMapConfiguration.cs @@ -14,7 +14,10 @@ public class FluentMapConfiguration /// Adds the specified to the configuration of Dapper.FluentMap. /// /// The type argument of the entity. - /// An instance of the interface containing the entity mapping configuration. + /// + /// An instance of the interface containing the + /// entity mapping configuration. + /// public void AddMap(IEntityMap mapper) where TEntity : class { if (FluentMapper.EntityMaps.TryAdd(typeof(TEntity), mapper)) diff --git a/src/Dapper.FluentMap/Conventions/Convention.cs b/src/Dapper.FluentMap/Conventions/Convention.cs index 2e2aa6a..39ddd33 100644 --- a/src/Dapper.FluentMap/Conventions/Convention.cs +++ b/src/Dapper.FluentMap/Conventions/Convention.cs @@ -19,9 +19,9 @@ protected Convention() PropertyMaps = new List(); } - internal IList ConventionConfigurations { get; private set; } + internal IList ConventionConfigurations { get; } - internal IList PropertyMaps { get; private set; } + internal IList PropertyMaps { get; } /// /// Configures a convention that applies on all properties of the entity. @@ -43,7 +43,7 @@ protected PropertyConventionConfiguration Properties() protected PropertyConventionConfiguration Properties() { // Get the underlying type for a nullale type. (int? -> int) - Type underlyingType = Nullable.GetUnderlyingType(typeof (T)) ?? typeof (T); + var underlyingType = Nullable.GetUnderlyingType(typeof(T)) ?? typeof(T); var config = new PropertyConventionConfiguration().Where(p => p.PropertyType == underlyingType); ConventionConfigurations.Add(config); diff --git a/src/Dapper.FluentMap/Conventions/PropertyConventionConfiguration.cs b/src/Dapper.FluentMap/Conventions/PropertyConventionConfiguration.cs index cec0270..c9dbcfd 100644 --- a/src/Dapper.FluentMap/Conventions/PropertyConventionConfiguration.cs +++ b/src/Dapper.FluentMap/Conventions/PropertyConventionConfiguration.cs @@ -11,7 +11,7 @@ namespace Dapper.FluentMap.Conventions public class PropertyConventionConfiguration { /// - /// Initializes a new instance of the class, + /// Initializes a new instance of the class, /// allowing configuration for a convention. /// public PropertyConventionConfiguration() @@ -19,7 +19,7 @@ public PropertyConventionConfiguration() PropertyPredicates = new List>(); } - internal IList> PropertyPredicates { get; private set; } + internal IList> PropertyPredicates { get; } internal ConventionPropertyConfiguration PropertyConfiguration { get; private set; } @@ -37,7 +37,10 @@ public PropertyConventionConfiguration Where(Func predicate) /// /// Configures the properties that this convention applies to. /// - /// An action that performs configuration against . + /// + /// An action that performs configuration against + /// . + /// public void Configure(Action configure) { var config = new ConventionPropertyConfiguration(); diff --git a/src/Dapper.FluentMap/Dapper.FluentMap.csproj b/src/Dapper.FluentMap/Dapper.FluentMap.csproj deleted file mode 100644 index 2302b94..0000000 --- a/src/Dapper.FluentMap/Dapper.FluentMap.csproj +++ /dev/null @@ -1,74 +0,0 @@ - - - - - Debug - AnyCPU - {A04CCA46-B05D-45D7-8ADC-5CEF70D26B60} - Library - Properties - Dapper.FluentMap - Dapper.FluentMap - v4.0 - 512 - - - - true - full - false - bin\Debug\ - DEBUG;TRACE - prompt - 4 - - - pdbonly - true - bin\Release\ - TRACE - prompt - 4 - bin\Release\Dapper.FluentMap.XML - - - - ..\packages\Dapper.1.50.0-beta8\lib\net40\Dapper.dll - True - - - - - - - - - - - - - - - - - - - - - - - - - - Designer - - - - - \ No newline at end of file diff --git a/src/Dapper.FluentMap/Dapper.FluentMap.xproj b/src/Dapper.FluentMap/Dapper.FluentMap.xproj new file mode 100644 index 0000000..bd44fad --- /dev/null +++ b/src/Dapper.FluentMap/Dapper.FluentMap.xproj @@ -0,0 +1,19 @@ + + + + 14.0.25123 + $(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion) + + + + 457e0b9b-f6a4-42c6-bfae-6f8c71d1f435 + Dapper.FluentMap + .\obj + .\bin\ + + + + 2.0 + + + \ No newline at end of file diff --git a/src/Dapper.FluentMap/FluentMapper.cs b/src/Dapper.FluentMap/FluentMapper.cs index 2b81d91..b8622a6 100644 --- a/src/Dapper.FluentMap/FluentMapper.cs +++ b/src/Dapper.FluentMap/FluentMapper.cs @@ -1,76 +1,76 @@ -using System; -using System.Collections.Concurrent; -using System.Collections.Generic; -using Dapper.FluentMap.Configuration; -using Dapper.FluentMap.Conventions; -using Dapper.FluentMap.Mapping; -using Dapper.FluentMap.TypeMaps; - -namespace Dapper.FluentMap -{ - /// - /// Main entry point for Dapper.FluentMap configuration. - /// - public static class FluentMapper - { - private static readonly FluentMapConfiguration _configuration = new FluentMapConfiguration(); - - /// - /// Gets the dictionary containing the entity mapping per entity type. - /// - public static readonly ConcurrentDictionary EntityMaps = new ConcurrentDictionary(); - - /// - /// Gets the dictionary containing the conventions per entity type. - /// - public static readonly IDictionary> TypeConventions = new Dictionary>(); - - /// - /// Initializes Dapper.FluentMap with the specified configuration. - /// This is method should be called when the application starts or when the first mapping is needed. - /// - /// A callback containing the configuration of Dapper.FluentMap. - public static void Initialize(Action configure) - { - configure(_configuration); - } - - /// - /// Registers a Dapper type map using fluent mapping for the specified . - /// - /// The type of the entity. - internal static void AddTypeMap() - { - SqlMapper.SetTypeMap(typeof (TEntity), new FluentMapTypeMap()); - } - - /// - /// Registers a Dapper type map using fluent mapping for the specified . - /// - /// The type of the entity. - internal static void AddTypeMap(Type entityType) - { - var instance = (SqlMapper.ITypeMap)Activator.CreateInstance(typeof (FluentMapTypeMap<>).MakeGenericType(entityType)); - SqlMapper.SetTypeMap(entityType, instance); - } - - /// - /// Registers a Dapper type map using conventions for the specified . - /// - /// The type of the entity. - internal static void AddConventionTypeMap() - { - SqlMapper.SetTypeMap(typeof (TEntity), new FluentConventionTypeMap()); - } - - /// - /// Registers a Dapper type map using conventions for the specified . - /// - /// The type of the entity. - internal static void AddConventionTypeMap(Type entityType) - { - var instance = (SqlMapper.ITypeMap)Activator.CreateInstance(typeof (FluentConventionTypeMap<>).MakeGenericType(entityType)); - SqlMapper.SetTypeMap(entityType, instance); - } - } -} +using System; +using System.Collections.Concurrent; +using System.Collections.Generic; +using Dapper.FluentMap.Configuration; +using Dapper.FluentMap.Conventions; +using Dapper.FluentMap.Mapping; +using Dapper.FluentMap.TypeMaps; + +namespace Dapper.FluentMap +{ + /// + /// Main entry point for Dapper.FluentMap configuration. + /// + public static class FluentMapper + { + private static readonly FluentMapConfiguration _configuration = new FluentMapConfiguration(); + + /// + /// Gets the dictionary containing the entity mapping per entity type. + /// + public static readonly ConcurrentDictionary EntityMaps = new ConcurrentDictionary(); + + /// + /// Gets the dictionary containing the conventions per entity type. + /// + public static readonly ConcurrentDictionary> TypeConventions = new ConcurrentDictionary>(); + + /// + /// Initializes Dapper.FluentMap with the specified configuration. + /// This is method should be called when the application starts or when the first mapping is needed. + /// + /// A callback containing the configuration of Dapper.FluentMap. + public static void Initialize(Action configure) + { + configure(_configuration); + } + + /// + /// Registers a Dapper type map using fluent mapping for the specified . + /// + /// The type of the entity. + internal static void AddTypeMap() + { + SqlMapper.SetTypeMap(typeof(TEntity), new FluentMapTypeMap()); + } + + /// + /// Registers a Dapper type map using fluent mapping for the specified . + /// + /// The type of the entity. + internal static void AddTypeMap(Type entityType) + { + var instance = (SqlMapper.ITypeMap)Activator.CreateInstance(typeof(FluentMapTypeMap<>).MakeGenericType(entityType)); + SqlMapper.SetTypeMap(entityType, instance); + } + + /// + /// Registers a Dapper type map using conventions for the specified . + /// + /// The type of the entity. + internal static void AddConventionTypeMap() + { + SqlMapper.SetTypeMap(typeof(TEntity), new FluentConventionTypeMap()); + } + + /// + /// Registers a Dapper type map using conventions for the specified . + /// + /// The type of the entity. + internal static void AddConventionTypeMap(Type entityType) + { + var instance = (SqlMapper.ITypeMap)Activator.CreateInstance(typeof(FluentConventionTypeMap<>).MakeGenericType(entityType)); + SqlMapper.SetTypeMap(entityType, instance); + } + } +} diff --git a/src/Dapper.FluentMap/Mapping/EntityMap.cs b/src/Dapper.FluentMap/Mapping/EntityMap.cs index f3926fa..85f5060 100644 --- a/src/Dapper.FluentMap/Mapping/EntityMap.cs +++ b/src/Dapper.FluentMap/Mapping/EntityMap.cs @@ -19,7 +19,7 @@ public interface IEntityMap } /// - /// Represents a typed mapping of an entity. + /// Represents a typed mapping of an entity. /// This serves as a marker interface for generic type inference. /// /// The type of the entity to configure the mapping for. @@ -36,7 +36,7 @@ public abstract class EntityMapBase : IEntityMap where TPropertyMap : IPropertyMap { /// - /// Initializes a new instance of the class. + /// Initializes a new instance of the class. /// protected EntityMapBase() { @@ -46,7 +46,7 @@ protected EntityMapBase() /// /// Gets the collection of mapped properties. /// - public IList PropertyMaps { get; private set; } + public IList PropertyMaps { get; } /// /// Returns an instance of which can perform custom mapping @@ -75,7 +75,7 @@ private void ThrowIfDuplicateMapping(IPropertyMap map) { if (PropertyMaps.Any(p => p.PropertyInfo.Name == map.PropertyInfo.Name)) { - throw new Exception(string.Format("Duplicate mapping detected. Property '{0}' is already mapped to column '{1}'.", map.PropertyInfo.Name, map.ColumnName)); + throw new Exception($"Duplicate mapping detected. Property '{map.PropertyInfo.Name}' is already mapped to column '{map.ColumnName}'."); } } } @@ -87,6 +87,7 @@ private void ThrowIfDuplicateMapping(IPropertyMap map) public abstract class EntityMap : EntityMapBase where TEntity : class { + /// protected override PropertyMap GetPropertyMap(PropertyInfo info) { return new PropertyMap(info); diff --git a/src/Dapper.FluentMap/Mapping/PropertyMap.cs b/src/Dapper.FluentMap/Mapping/PropertyMap.cs index 0675198..09bd82a 100644 --- a/src/Dapper.FluentMap/Mapping/PropertyMap.cs +++ b/src/Dapper.FluentMap/Mapping/PropertyMap.cs @@ -38,7 +38,7 @@ public abstract class PropertyMapBase where TPropertyMap : class, IPropertyMap { /// - /// Initializes a new instance of the using + /// Initializes a new instance of the using /// the specified object representing the property to map. /// /// The object representing to the property to map. @@ -49,8 +49,8 @@ protected PropertyMapBase(PropertyInfo info) } /// - /// Initializes a new instance of the using - /// the specified object representing the property to map + /// Initializes a new instance of the using + /// the specified object representing the property to map /// and column name to map the property to. /// /// The object representing to the property to map. @@ -62,8 +62,8 @@ internal PropertyMapBase(PropertyInfo info, string columnName) } /// - /// Initializes a new instance of the using - /// the specified object representing the property to map, + /// Initializes a new instance of the using + /// the specified object representing the property to map, /// column name to map the property to and a value indicating whether the mapping should be case sensitive. /// /// The object representing to the property to map. @@ -76,13 +76,25 @@ internal PropertyMapBase(PropertyInfo info, string columnName, bool caseSensitiv CaseSensitive = caseSensitive; } + /// + /// Gets the column name for the mapping. + /// public string ColumnName { get; private set; } + /// + /// Gets a value indicating whether this mapping is case sensitive. + /// public bool CaseSensitive { get; private set; } + /// + /// Gets a value indicating the property should be ignored when mapping. + /// public bool Ignored { get; private set; } - public PropertyInfo PropertyInfo { get; private set; } + /// + /// Gets a reference to the of this mapping. + /// + public PropertyInfo PropertyInfo { get; } /// /// Maps the current property to the specified column name. @@ -108,24 +120,28 @@ public TPropertyMap Ignore() } #region EditorBrowsableStates + /// [EditorBrowsable(EditorBrowsableState.Never)] public override string ToString() { return base.ToString(); } + /// [EditorBrowsable(EditorBrowsableState.Never)] public override bool Equals(object obj) { return base.Equals(obj); } + /// [EditorBrowsable(EditorBrowsableState.Never)] public override int GetHashCode() { return base.GetHashCode(); } + /// [EditorBrowsable(EditorBrowsableState.Never)] public new Type GetType() { @@ -140,7 +156,7 @@ public override int GetHashCode() public class PropertyMap : PropertyMapBase, IPropertyMap { /// - /// Initializes a new instance of the class + /// Initializes a new instance of the class /// with the specified object. /// /// The information about the property. @@ -150,7 +166,7 @@ public PropertyMap(PropertyInfo info) } /// - /// Initializes a new instance of the class + /// Initializes a new instance of the class /// with the specified object and column name. /// /// The information about the property. @@ -161,8 +177,8 @@ public PropertyMap(PropertyInfo info, string columnName) } /// - /// Initializes a new instance of the class - /// with the specified object, column name + /// Initializes a new instance of the class + /// with the specified object, column name /// and a value indicating whether the mapping should be case sensitive. /// /// The information about the property. diff --git a/src/Dapper.FluentMap/Properties/AssemblyInfo.cs b/src/Dapper.FluentMap/Properties/AssemblyInfo.cs deleted file mode 100644 index 03f2d49..0000000 --- a/src/Dapper.FluentMap/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,26 +0,0 @@ -using System.Reflection; -using System.Runtime.CompilerServices; -using System.Runtime.InteropServices; - -// General Information about an assembly is controlled through the following -// set of attributes. Change these attribute values to modify the information -// associated with an assembly. -[assembly: AssemblyTitle("Dapper.FluentMap")] -[assembly: AssemblyDescription("Provides a simple API to fluently map POCO properties to database columns when using Dapper.")] -[assembly: AssemblyConfiguration("Dapper.FluentMap extension for Dommel support.")] -[assembly: AssemblyCompany("")] -[assembly: AssemblyProduct("Dapper.FluentMap")] -[assembly: AssemblyCopyright("Copyright © 2016 Henk Mollema")] -[assembly: AssemblyTrademark("")] -[assembly: AssemblyCulture("")] - -// Setting ComVisible to false makes the types in this assembly not visible -// to COM components. If you need to access a type in this assembly from -// COM, set the ComVisible attribute to true on that type. -[assembly: ComVisible(false)] - -// The following GUID is for the ID of the typelib if this project is exposed to COM -[assembly: Guid("4bec5ee4-bd0e-4760-badb-5f35d076133f")] - -[assembly: AssemblyVersion("1.5.0")] -[assembly: AssemblyInformationalVersion("1.5.0-beta1")] diff --git a/src/Dapper.FluentMap/TypeMaps/FluentConventionTypeMap.cs b/src/Dapper.FluentMap/TypeMaps/FluentConventionTypeMap.cs index 009cff5..95017ef 100644 --- a/src/Dapper.FluentMap/TypeMaps/FluentConventionTypeMap.cs +++ b/src/Dapper.FluentMap/TypeMaps/FluentConventionTypeMap.cs @@ -1,83 +1,84 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Reflection; - -using Dapper.FluentMap.Conventions; -using Dapper.FluentMap.Mapping; - -namespace Dapper.FluentMap.TypeMaps -{ - /// - /// Represents a Dapper type mapping strategy which first tries to map the type using a - /// with the configured conventions. is used as fallback mapping strategy. - /// - /// The type of the entity. - internal class FluentConventionTypeMap : MultiTypeMap - { - /// - /// Initializes a new instance of the class - /// which uses the and - /// as mapping strategies. - /// - public FluentConventionTypeMap() - : base(new CustomPropertyTypeMap(typeof(TEntity), GetPropertyInfo), new DefaultTypeMap(typeof(TEntity))) - { - } - - private static PropertyInfo GetPropertyInfo(Type type, string columnName) - { - string cacheKey = string.Format("{0};{1}", type.FullName, columnName); - - PropertyInfo info; - if (TypePropertyMapCache.TryGetValue(cacheKey, out info)) - { - return info; - } - - IList conventions; - if (FluentMapper.TypeConventions.TryGetValue(type, out conventions)) - { - foreach (var convention in conventions) - { - // Find property map for current type and column name. - var maps = convention.PropertyMaps - .Where(map => map.PropertyInfo.ReflectedType == type && - MatchColumnNames(map, columnName)) - .ToList(); - - if (maps.Count > 1) - { - const string msg = "Finding mappings for column '{0}' yielded more than 1 PropertyMap. The conventions should be more specific. Type: '{1}'. Convention: '{2}'."; - throw new Exception(string.Format(msg, columnName, type, convention)); - } - - if (maps.Count == 0) - { - // This convention has no property maps, continue to next convention. - continue; - } - - info = maps[0].PropertyInfo; - TypePropertyMapCache.TryAdd(cacheKey, info); - return info; - } - } - - // If we get here, the property was not mapped. - TypePropertyMapCache.TryAdd(cacheKey, null); - return null; - } - - private static bool MatchColumnNames(IPropertyMap map, string columnName) - { - var comparison = StringComparison.Ordinal; - if (!map.CaseSensitive) - { - comparison = StringComparison.OrdinalIgnoreCase; - } - - return string.Equals(map.ColumnName, columnName, comparison); - } - } -} +using System; +using System.Collections.Generic; +using System.Linq; +using System.Reflection; +using Dapper.FluentMap.Conventions; +using Dapper.FluentMap.Mapping; + +namespace Dapper.FluentMap.TypeMaps +{ + /// + /// Represents a Dapper type mapping strategy which first tries to map the type using a + /// + /// with the configured conventions. is used as fallback mapping strategy. + /// + /// The type of the entity. + public class FluentConventionTypeMap : MultiTypeMap + { + /// + /// Initializes a new instance of the class + /// which uses the and + /// as mapping strategies. + /// + public FluentConventionTypeMap() + : base(new CustomPropertyTypeMap(typeof(TEntity), GetPropertyInfo), new DefaultTypeMap(typeof(TEntity))) + { + } + + private static PropertyInfo GetPropertyInfo(Type type, string columnName) + { + var cacheKey = $"{type.FullName};{columnName}"; + + PropertyInfo info; + if (TypePropertyMapCache.TryGetValue(cacheKey, out info)) + { + return info; + } + + IList conventions; + if (FluentMapper.TypeConventions.TryGetValue(type, out conventions)) + { + foreach (var convention in conventions) + { + // Find property map for current type and column name. + // todo: ReflectedType is unavailable on CoreFX + var maps = convention.PropertyMaps + .Where(map => map.PropertyInfo.DeclaringType == type && + MatchColumnNames(map, columnName)) + .ToList(); + + if (maps.Count > 1) + { + const string msg = "Finding mappings for column '{0}' yielded more than 1 PropertyMap. The conventions should be more specific. Type: '{1}'. Convention: '{2}'."; + throw new Exception(string.Format(msg, columnName, type, convention)); + } + + if (maps.Count == 0) + { + // This convention has no property maps, continue to next convention. + continue; + } + + info = maps[0].PropertyInfo; + TypePropertyMapCache.TryAdd(cacheKey, info); + return info; + } + } + + // If we get here, the property was not mapped. + TypePropertyMapCache.TryAdd(cacheKey, null); + return null; + } + + private static bool MatchColumnNames(IPropertyMap map, string columnName) + { + var comparison = StringComparison.Ordinal; + if (!map.CaseSensitive) + { + comparison = StringComparison.OrdinalIgnoreCase; + } + + return string.Equals(map.ColumnName, columnName, comparison); + } + } +} diff --git a/src/Dapper.FluentMap/TypeMaps/FluentTypeMap.cs b/src/Dapper.FluentMap/TypeMaps/FluentTypeMap.cs index bda2aaa..8d99e84 100644 --- a/src/Dapper.FluentMap/TypeMaps/FluentTypeMap.cs +++ b/src/Dapper.FluentMap/TypeMaps/FluentTypeMap.cs @@ -1,70 +1,70 @@ -using System; -using System.Linq; -using System.Reflection; - -using Dapper.FluentMap.Mapping; - -namespace Dapper.FluentMap.TypeMaps -{ - /// - /// Represents a Dapper type mapping strategy which first tries to map the type using a , - /// if that fails, the is used as mapping strategy. - /// - /// The type of the entity. - internal class FluentMapTypeMap : MultiTypeMap - { - /// - /// Initializes a new instance of the class - /// which uses the and - /// as mapping strategies. - /// - public FluentMapTypeMap() - : base(new CustomPropertyTypeMap(typeof(TEntity), GetPropertyInfo), new DefaultTypeMap(typeof(TEntity))) - { - } - - private static PropertyInfo GetPropertyInfo(Type type, string columnName) - { - string cacheKey = string.Format("{0};{1}", type.FullName, columnName); - - PropertyInfo info; - if (TypePropertyMapCache.TryGetValue(cacheKey, out info)) - { - return info; - } - - IEntityMap entityMap; - if (FluentMapper.EntityMaps.TryGetValue(type, out entityMap)) - { - var propertyMaps = entityMap.PropertyMaps; - - // Find the mapping for the column name. - var propertyMap = propertyMaps.FirstOrDefault(m => MatchColumnNames(m, columnName)); - - if (propertyMap != null) - { - if (!propertyMap.Ignored) - { - TypePropertyMapCache.TryAdd(cacheKey, propertyMap.PropertyInfo); - return propertyMap.PropertyInfo; - } - } - } - - // If we get here, the property was not mapped. - TypePropertyMapCache.TryAdd(cacheKey, null); - return null; - } - - private static bool MatchColumnNames(IPropertyMap map, string columnName) - { - var comparison = StringComparison.Ordinal; - if (!map.CaseSensitive) - { - comparison = StringComparison.OrdinalIgnoreCase; - } - - return string.Equals(map.ColumnName, columnName, comparison); - } - } -} +using System; +using System.Linq; +using System.Reflection; +using Dapper.FluentMap.Mapping; + +namespace Dapper.FluentMap.TypeMaps +{ + /// + /// Represents a Dapper type mapping strategy which first tries to map the type using a + /// , + /// if that fails, the is used as mapping strategy. + /// + /// The type of the entity. + public class FluentMapTypeMap : MultiTypeMap + { + /// + /// Initializes a new instance of the class + /// which uses the and + /// as mapping strategies. + /// + public FluentMapTypeMap() + : base(new CustomPropertyTypeMap(typeof(TEntity), GetPropertyInfo), new DefaultTypeMap(typeof(TEntity))) + { + } + + private static PropertyInfo GetPropertyInfo(Type type, string columnName) + { + var cacheKey = $"{type.FullName};{columnName}"; + + PropertyInfo info; + if (TypePropertyMapCache.TryGetValue(cacheKey, out info)) + { + return info; + } + + IEntityMap entityMap; + if (FluentMapper.EntityMaps.TryGetValue(type, out entityMap)) + { + var propertyMaps = entityMap.PropertyMaps; + + // Find the mapping for the column name. + var propertyMap = propertyMaps.FirstOrDefault(m => MatchColumnNames(m, columnName)); + + if (propertyMap != null) + { + if (!propertyMap.Ignored) + { + TypePropertyMapCache.TryAdd(cacheKey, propertyMap.PropertyInfo); + return propertyMap.PropertyInfo; + } + } + } + + // If we get here, the property was not mapped. + TypePropertyMapCache.TryAdd(cacheKey, null); + return null; + } + + private static bool MatchColumnNames(IPropertyMap map, string columnName) + { + var comparison = StringComparison.Ordinal; + if (!map.CaseSensitive) + { + comparison = StringComparison.OrdinalIgnoreCase; + } + + return string.Equals(map.ColumnName, columnName, comparison); + } + } +} diff --git a/src/Dapper.FluentMap/TypeMaps/MultiTypeMap.cs b/src/Dapper.FluentMap/TypeMaps/MultiTypeMap.cs index b4cb7ba..86052dc 100644 --- a/src/Dapper.FluentMap/TypeMaps/MultiTypeMap.cs +++ b/src/Dapper.FluentMap/TypeMaps/MultiTypeMap.cs @@ -8,10 +8,9 @@ namespace Dapper.FluentMap.TypeMaps /// /// Represents a Dapper type mapping strategy which consists of multiple strategies. /// - internal abstract class MultiTypeMap : SqlMapper.ITypeMap + public abstract class MultiTypeMap : SqlMapper.ITypeMap { private readonly IEnumerable _mappers; - private static readonly ConcurrentDictionary _typePropertyMapCache = new ConcurrentDictionary(); /// /// Initializes an instance of the @@ -23,6 +22,7 @@ protected MultiTypeMap(params SqlMapper.ITypeMap[] mappers) _mappers = mappers; } + /// public ConstructorInfo FindConstructor(string[] names, Type[] types) { foreach (var mapper in _mappers) @@ -46,6 +46,7 @@ public ConstructorInfo FindConstructor(string[] names, Type[] types) return null; } + /// public ConstructorInfo FindExplicitConstructor() { foreach (var mapper in _mappers) @@ -68,6 +69,7 @@ public ConstructorInfo FindExplicitConstructor() return null; } + /// public SqlMapper.IMemberMap GetConstructorParameter(ConstructorInfo constructor, string columnName) { foreach (var mapper in _mappers) @@ -91,6 +93,7 @@ public SqlMapper.IMemberMap GetConstructorParameter(ConstructorInfo constructor, return null; } + /// public SqlMapper.IMemberMap GetMember(string columnName) { foreach (var mapper in _mappers) @@ -113,12 +116,9 @@ public SqlMapper.IMemberMap GetMember(string columnName) return null; } - protected static ConcurrentDictionary TypePropertyMapCache - { - get - { - return _typePropertyMapCache; - } - } + /// + /// Gets a cache for columns and properties. + /// + protected static ConcurrentDictionary TypePropertyMapCache { get; } = new ConcurrentDictionary(); } } diff --git a/src/Dapper.FluentMap/packages.config b/src/Dapper.FluentMap/packages.config deleted file mode 100644 index a4852e8..0000000 --- a/src/Dapper.FluentMap/packages.config +++ /dev/null @@ -1,4 +0,0 @@ - - - - \ No newline at end of file diff --git a/src/Dapper.FluentMap/project.json b/src/Dapper.FluentMap/project.json new file mode 100644 index 0000000..13b6997 --- /dev/null +++ b/src/Dapper.FluentMap/project.json @@ -0,0 +1,44 @@ +{ + "version": "1.5.0", + "description": "Simple API to fluently map POCO properties to database columns when using Dapper.", + "authors": [ "Henk Mollema" ], + "copyright": "Copyright © Henk Mollema 2016", + "packOptions": { + "licenseUrl": "https://github.com/henkmollema/Dapper-FluentMap/blob/master/LICENSE", + "owners": [ "Henk Mollema" ], + "projectUrl": "https://github.com/henkmollema/Dapper-FluentMap", + "tags": [ "c#", "dapper", "mapping", "fluentmap" ] + }, + + "dependencies": { + "Dapper": "1.50.0-rc2b" + }, + + "frameworks": { + "net40": { + "frameworkAssemblies": { + "System.Data": "4.0.0.0" + } + }, + + "net451": { + "frameworkAssemblies": { + "System.Data": "4.0.0.0" + } + }, + + "netstandard1.3": { + "buildOptions": { + "define": [ "COREFX" ] + }, + "dependencies": { + "NETStandard.Library": "1.5.0-rc2-24027", + "System.Reflection.TypeExtensions": "4.1.0-rc2-24027" + } + } + }, + + "buildOptions": { + "xmlDoc": true + } +} diff --git a/test/Dapper.FluentMap.Tests/ConventionTests.cs b/test/Dapper.FluentMap.Tests/ConventionTests.cs new file mode 100644 index 0000000..d80c3eb --- /dev/null +++ b/test/Dapper.FluentMap.Tests/ConventionTests.cs @@ -0,0 +1,58 @@ +using Dapper.FluentMap.Conventions; +using Xunit; + +#if COREFX +using System.Reflection; +#endif + +namespace Dapper.FluentMap.Tests +{ + public class ConventionTests + { +#if NET451 + [Fact] + public void ShouldMapEntitiesInCurrentAssembly() + { + PreTest(); + + // Arrange & Act + FluentMapper.Initialize(c => c.AddConvention().ForEntitiesInCurrentAssembly()); + + // Asert + Assert.True(FluentMapper.TypeConventions.ContainsKey(typeof(TestEntity))); + var map = FluentMapper.TypeConventions[typeof(TestEntity)]; + Assert.True(map[0] is TestConvention); + } +#elif COREFX + [Fact] + public void ShouldMapEntitiesInCurrentAssembly() + { + PreTest(); + + // Arrange & Act + FluentMapper.Initialize(c => c.AddConvention().ForEntitiesInAssembly(typeof(ConventionTests).GetTypeInfo().Assembly)); + + // Asert + Assert.True(FluentMapper.TypeConventions.ContainsKey(typeof(TestEntity))); + var map = FluentMapper.TypeConventions[typeof(TestEntity)]; + Assert.True(map[0] is TestConvention); + } +#endif + + private class TestConvention : Convention + { + public TestConvention() + { + Properties(). + Where(p => p.Name.ToLower() == "id") + .Configure(c => c.HasColumnName("autID")); + } + } + + private static void PreTest() + { + FluentMapper.EntityMaps.Clear(); + FluentMapper.TypeConventions.Clear(); + } + } +} diff --git a/test/Dapper.FluentMap.Tests/Dapper.FluentMap.Tests.xproj b/test/Dapper.FluentMap.Tests/Dapper.FluentMap.Tests.xproj new file mode 100644 index 0000000..b90448a --- /dev/null +++ b/test/Dapper.FluentMap.Tests/Dapper.FluentMap.Tests.xproj @@ -0,0 +1,19 @@ + + + + 14.0.25123 + $(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion) + + + + 8901f2fd-f98b-484b-a20a-7844a39c7458 + Dapper.FluentMap.Tests + .\obj + .\bin\ + + + + 2.0 + + + \ No newline at end of file diff --git a/src/Dapper.FluentMap.Tests/ManualMappingTests.cs b/test/Dapper.FluentMap.Tests/ManualMappingTests.cs similarity index 50% rename from src/Dapper.FluentMap.Tests/ManualMappingTests.cs rename to test/Dapper.FluentMap.Tests/ManualMappingTests.cs index c761f87..fb2f5a4 100644 --- a/src/Dapper.FluentMap.Tests/ManualMappingTests.cs +++ b/test/Dapper.FluentMap.Tests/ManualMappingTests.cs @@ -1,149 +1,192 @@ -using System; -using System.Linq; -using Dapper.FluentMap.Mapping; -using Microsoft.VisualStudio.TestTools.UnitTesting; - -namespace Dapper.FluentMap.Tests -{ - [TestClass] - public class ManualMappingTests - { - [TestMethod] - [ExpectedException(typeof (Exception))] - public void Duplicate_Mapping_Should_Throw_Exception() - { - PreTest(); - var map = new MapWithDuplicateMapping(); - } - - [TestMethod] - public void EntityMap_Should_Have_Empty_PropertyMap_Collection() - { - PreTest(); - var map = new EmptyMap(); - Assert.IsNotNull(map.PropertyMaps, "PropertyMaps collection is not initialized with an empty list."); - } - - [TestMethod] - public void EntityMap_Should_Have_PropertyMap() - { - PreTest(); - var map = new MapWithOnePropertyMap(); - Assert.IsNotNull(map.PropertyMaps, "PropertyMaps collection is not initialized with an empty list."); - Assert.IsTrue(map.PropertyMaps.Count == 1, "PropertyMaps has less or more than 1 item."); - } - - [TestMethod] - public void PropertyMap_Should_Be_CaseInsensitive() - { - PreTest(); - var map = new CaseInsensitveMap(); - var propertyMap = map.PropertyMaps.Single(); - Assert.IsTrue(propertyMap.ColumnName == "test", "ColumnName of PropertyMap is incorrect."); - Assert.IsFalse(propertyMap.CaseSensitive, "PropertyMap is not case insensitive."); - } - - [TestMethod] - public void Property_Should_Be_Ignored() - { - PreTest(); - var map = new IgnoreMap(); - var propertyMap = map.PropertyMaps.Single(); - Assert.IsTrue(propertyMap.Ignored, "Property is not ignored."); - } - - [TestMethod] - public void PropertyInfo_Name_Should_Be_Id() - { - PreTest(); - var map = new MapWithOnePropertyMap(); - var propertyMap = map.PropertyMaps.Single(); - Assert.IsTrue(propertyMap.PropertyInfo.Name == "Id", "PropertyInfo.Name is not the same as expression property."); - } - - [TestMethod] - public void FluentMapper_Initialize_Should_Add_EntityMap() - { - PreTest(); - FluentMapper.Initialize(c => c.AddMap(new MapWithOnePropertyMap())); - Assert.IsTrue(FluentMapper.EntityMaps.Count == 1, "FluentMapper.EntityMaps contains less or more than 1 mapping."); - - var entityMap = FluentMapper.EntityMaps.Single(); - Assert.IsTrue(entityMap.Key == typeof (TestEntity), "EntityMap entity type is not correct."); - Assert.IsTrue(entityMap.Value is MapWithOnePropertyMap, "EntityMap type is not correct."); - } - - [TestMethod] - public void FluentMapper_Initialize_Should_Add_Dapper_TypeMap() - { - PreTest(); - FluentMapper.Initialize(c => c.AddMap(new MapWithOnePropertyMap())); - SqlMapper.ITypeMap typeMap = SqlMapper.GetTypeMap(typeof (TestEntity)); - Assert.IsNotNull(typeMap, "TypeMap is null."); - } - - [TestMethod] - public void PropertyMap_ShouldMapInheritedProperies() - { - PreTest(); - var map = new DerivedMap(); - var idMap = map.PropertyMaps.First(); - Assert.IsTrue(idMap.PropertyInfo.ReflectedType == typeof (DerivedTestEntity)); - - var nameName = map.PropertyMaps.Skip(1).First(); - Assert.IsTrue(nameName.PropertyInfo.ReflectedType == typeof(DerivedTestEntity)); - } - - private static void PreTest() - { - FluentMapper.EntityMaps.Clear(); - FluentMapper.TypeConventions.Clear(); - } - - private class IgnoreMap : EntityMap - { - public IgnoreMap() - { - Map(p => p.Id).Ignore(); - } - } - - private class CaseInsensitveMap : EntityMap - { - public CaseInsensitveMap() - { - Map(p => p.Id).ToColumn("test", caseSensitive: false); - } - } - - private class MapWithOnePropertyMap : EntityMap - { - public MapWithOnePropertyMap() - { - Map(p => p.Id).ToColumn("test"); - } - } - - private class DerivedMap : EntityMap - { - public DerivedMap() - { - Map(p => p.Id).ToColumn("intId"); - Map(p => p.Name).ToColumn("strName"); - } - } - - private class MapWithDuplicateMapping : EntityMap - { - public MapWithDuplicateMapping() - { - Map(p => p.Id).ToColumn("id"); - Map(p => p.Id).ToColumn("id2"); - } - } - - private class EmptyMap : EntityMap - { - } - } -} +using System; +using System.Linq; +using Dapper.FluentMap.Mapping; +using Dapper.FluentMap.TypeMaps; +using Xunit; + +namespace Dapper.FluentMap.Tests +{ + public class ManualMappingTests + { + [Fact] + public void DuplicateMappingShouldThrow_Exception() + { + // Arrange + PreTest(); + + // Act & Assert + Assert.Throws(() => new MapWithDuplicateMapping()); + } + + [Fact] + public void EntityMapShouldHaveEmptyPropertyMapCollection() + { + // Arrange + PreTest(); + + // Act + var map = new EmptyMap(); + + // Assert + Assert.NotNull(map.PropertyMaps); + Assert.Empty(map.PropertyMaps); + } + + [Fact] + public void EntityMapShouldHavePropertyMap() + { + // Arrange + PreTest(); + + // Act + var map = new MapWithOnePropertyMap(); + + // Assert + Assert.NotEmpty(map.PropertyMaps); + Assert.Equal(1, map.PropertyMaps.Count); + } + + [Fact] + public void PropertyMapShouldBeCaseInsensitive() + { + // Arrange + PreTest(); + + // Act + var map = new CaseInsensitveMap(); + var propertyMap = map.PropertyMaps.Single(); + + // Assert + Assert.Equal("Test", propertyMap.ColumnName, ignoreCase: true); + Assert.False(propertyMap.CaseSensitive); + } + + [Fact] + public void PropertyShouldBeIgnored() + { + // Arrange + PreTest(); + + // Act + var map = new IgnoreMap(); + var propertyMap = map.PropertyMaps.Single(); + + // Assert + Assert.True(propertyMap.Ignored); + } + + [Fact] + public void PropertyInfoNameShouldBeId() + { + // Arrange + PreTest(); + + // Act + var map = new MapWithOnePropertyMap(); + var propertyMap = map.PropertyMaps.Single(); + + // Assert + Assert.Equal("Id", propertyMap.PropertyInfo.Name); + } + + [Fact] + public void FluentMapperInitializeShouldAddEntityMap() + { + // Arrange + PreTest(); + + // Act + FluentMapper.Initialize(c => c.AddMap(new MapWithOnePropertyMap())); + var entityMap = FluentMapper.EntityMaps.Single(); + + // Assert + Assert.Equal(1, FluentMapper.EntityMaps.Count); + Assert.Equal(typeof(TestEntity), entityMap.Key); + Assert.IsType(entityMap.Value); + } + + [Fact] + public void FluentMapperInitializeShouldAddDapperTypeMap() + { + // Arrange + PreTest(); + + // Act + FluentMapper.Initialize(c => c.AddMap(new MapWithOnePropertyMap())); + var typeMap = SqlMapper.GetTypeMap(typeof(TestEntity)); + + // Assert + Assert.NotNull(typeMap); + Assert.IsType>(typeMap); + } + + [Fact] + public void PropertyMapShouldMapInheritedProperies() + { + // Arrange + PreTest(); + + // Act + var map = new DerivedMap(); + var idMap = map.PropertyMaps.First(); + var nameMap = map.PropertyMaps.Skip(1).First(); + + // Assert + // todo: should be ReflectedType so the type is DerivedTestEntity + Assert.Equal(typeof(TestEntity), idMap.PropertyInfo.DeclaringType); + Assert.Equal(typeof(DerivedTestEntity), nameMap.PropertyInfo.DeclaringType); + } + + private static void PreTest() + { + FluentMapper.EntityMaps.Clear(); + FluentMapper.TypeConventions.Clear(); + } + + private class IgnoreMap : EntityMap + { + public IgnoreMap() + { + Map(p => p.Id).Ignore(); + } + } + + private class CaseInsensitveMap : EntityMap + { + public CaseInsensitveMap() + { + Map(p => p.Id).ToColumn("test", caseSensitive: false); + } + } + + private class MapWithOnePropertyMap : EntityMap + { + public MapWithOnePropertyMap() + { + Map(p => p.Id).ToColumn("test"); + } + } + + private class DerivedMap : EntityMap + { + public DerivedMap() + { + Map(p => p.Id).ToColumn("intId"); + Map(p => p.Name).ToColumn("strName"); + } + } + + private class MapWithDuplicateMapping : EntityMap + { + public MapWithDuplicateMapping() + { + Map(p => p.Id).ToColumn("id"); + Map(p => p.Id).ToColumn("id2"); + } + } + + private class EmptyMap : EntityMap + { + } + } +} diff --git a/src/Dapper.FluentMap.Dommel/Properties/AssemblyInfo.cs b/test/Dapper.FluentMap.Tests/Properties/AssemblyInfo.cs similarity index 66% rename from src/Dapper.FluentMap.Dommel/Properties/AssemblyInfo.cs rename to test/Dapper.FluentMap.Tests/Properties/AssemblyInfo.cs index abeda41..8b892e0 100644 --- a/src/Dapper.FluentMap.Dommel/Properties/AssemblyInfo.cs +++ b/test/Dapper.FluentMap.Tests/Properties/AssemblyInfo.cs @@ -1,26 +1,23 @@ -using System.Reflection; -using System.Runtime.CompilerServices; -using System.Runtime.InteropServices; - -// General Information about an assembly is controlled through the following -// set of attributes. Change these attribute values to modify the information -// associated with an assembly. -[assembly: AssemblyTitle("Dapper.FluentMap.Dommel")] -[assembly: AssemblyDescription("")] -[assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("")] -[assembly: AssemblyProduct("Dapper.FluentMap.Dommel")] -[assembly: AssemblyCopyright("Copyright © 2016 Henk Mollema")] -[assembly: AssemblyTrademark("")] -[assembly: AssemblyCulture("")] - -// Setting ComVisible to false makes the types in this assembly not visible -// to COM components. If you need to access a type in this assembly from -// COM, set the ComVisible attribute to true on that type. -[assembly: ComVisible(false)] - -// The following GUID is for the ID of the typelib if this project is exposed to COM -[assembly: Guid("ef9b2624-ef04-4231-8f5a-55c41929b4a1")] - -[assembly: AssemblyVersion("1.3.0")] -[assembly: AssemblyInformationalVersion("1.3.0-beta1")] +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +[assembly: AssemblyTitle("Dapper.FluentMap.Tests")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("Dapper.FluentMap.Tests")] +[assembly: AssemblyCopyright("Copyright © 2015")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from +// COM, set the ComVisible attribute to true on that type. +[assembly: ComVisible(false)] + +// The following GUID is for the ID of the typelib if this project is exposed to COM +[assembly: Guid("ff3fae2a-eb78-46cc-b049-ed4f5123bc4b")] diff --git a/src/Dapper.FluentMap.Tests/TestEntity.cs b/test/Dapper.FluentMap.Tests/TestEntity.cs similarity index 99% rename from src/Dapper.FluentMap.Tests/TestEntity.cs rename to test/Dapper.FluentMap.Tests/TestEntity.cs index d93a3f0..44bfd8c 100644 --- a/src/Dapper.FluentMap.Tests/TestEntity.cs +++ b/test/Dapper.FluentMap.Tests/TestEntity.cs @@ -9,4 +9,4 @@ public class DerivedTestEntity : TestEntity { public string Name { get; set; } } -} \ No newline at end of file +} diff --git a/test/Dapper.FluentMap.Tests/project.json b/test/Dapper.FluentMap.Tests/project.json new file mode 100644 index 0000000..954e64c --- /dev/null +++ b/test/Dapper.FluentMap.Tests/project.json @@ -0,0 +1,28 @@ +{ + "dependencies": { + "Dapper.FluentMap": "1.5.0", + "xunit": "2.1.0", + "dotnet-test-xunit": "1.0.0-rc2-build10015", + "Microsoft.NETCore.Platforms": "1.0.1-rc2-24027" + }, + + "frameworks": { + "netcoreapp1.0": { + "buildOptions": { + "define": [ "COREFX" ] + }, + "dependencies": { + "Microsoft.NETCore.App": { + "version": "1.0.0-rc2-3002702", + "type": "platform" + } + }, + "imports": [ + "dnxcore50", + "portable-net451+win8" + ] + } + }, + + "testRunner": "xunit" +}