Skip to content

Commit fd2445b

Browse files
Merge pull request #53 from Azure/chgagnon/mergeFromDev
Merge over changes from dev
2 parents cba1653 + b25cdd5 commit fd2445b

File tree

9 files changed

+552
-64
lines changed

9 files changed

+552
-64
lines changed

Images/dbSetup.png

14.3 KB
Loading

README.md

Lines changed: 375 additions & 58 deletions
Large diffs are not rendered by default.

WebJobs.Extensions.Sql.sln

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SqlExtensionSamples", "samp
77
EndProject
88
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SqlBinding", "src\SqlBinding\SqlBinding.csproj", "{4453B407-2CA3-4011-BDE5-247FCE5C1974}"
99
EndProject
10-
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SqlExtension.Tests", "test\SQLExtension.tests\SqlExtension.Tests.csproj", "{A5B55530-71C8-4A9A-92AD-1D33A5E80FC1}"
10+
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SqlExtension.Tests", "test\SqlExtension.Tests\SqlExtension.Tests.csproj", "{A5B55530-71C8-4A9A-92AD-1D33A5E80FC1}"
1111
EndProject
1212
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{21CDC01C-247B-46B0-A8F5-9D35686C628B}"
1313
EndProject

builds/azure-pipelines/build-pr.yml

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
trigger: none
2+
3+
pr:
4+
branches:
5+
include:
6+
- dev
7+
8+
variables:
9+
solution: '**/*.sln'
10+
configuration: 'Debug'
11+
12+
stages:
13+
- stage: Build
14+
displayName: 'PR Validation'
15+
16+
jobs:
17+
- job: BuildTest
18+
displayName: 'Build and Test on'
19+
20+
# Verifies cross-platform build and test
21+
strategy:
22+
matrix:
23+
linux:
24+
imageName: 'ubuntu-latest'
25+
mac:
26+
imageName: 'macos-latest'
27+
windows:
28+
imageName: 'windows-latest'
29+
30+
pool:
31+
vmImage: '$(imageName)'
32+
33+
workspace:
34+
clean: all
35+
36+
steps:
37+
- template: 'template-steps-build-test.yml'
38+
parameters:
39+
solution: '$(solution)'
40+
configuration: '$(configuration)'
41+
nugetVersion: '1.0.0-test'
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
trigger: none
2+
3+
pr: none
4+
5+
schedules:
6+
- cron: "0 0 * * *"
7+
displayName: Mon-Fri at Midnight
8+
branches:
9+
include:
10+
- dev
11+
always: true
12+
13+
variables:
14+
solution: '**/*.sln'
15+
configuration: 'Release'
16+
versionMajor: 0
17+
versionMinor: 1
18+
versionPatch: $[counter(variables['versionMinor'], 0)] # This will reset when we bump minor version
19+
nugetVersion: '$(versionMajor).$(versionMinor).$(versionPatch)'
20+
21+
stages:
22+
- stage: BuildPublish
23+
displayName: 'Release Build and Publish'
24+
25+
jobs:
26+
- job: BuildTestPublish
27+
displayName: 'Release: Build, Test and Publish on Windows'
28+
29+
pool:
30+
vmImage: 'windows-latest'
31+
32+
workspace:
33+
clean: all
34+
35+
steps:
36+
- template: 'template-steps-build-test.yml'
37+
parameters:
38+
solution: '$(solution)'
39+
configuration: '$(configuration)'
40+
nugetVersion: '$(nugetVersion)'
41+
42+
- template: 'template-steps-publish.yml'
43+
parameters:
44+
configuration: '$(configuration)'
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
parameters:
2+
configuration: ''
3+
solution: ''
4+
nugetVersion: ''
5+
6+
steps:
7+
- task: UseDotNet@2
8+
displayName: 'Install .NET Core SDK 3.1.x for Build'
9+
inputs:
10+
version: '3.1.x'
11+
12+
- task: DotNetCoreCLI@2
13+
displayName: '.NET Restore'
14+
inputs:
15+
command: restore
16+
projects: '${{ parameters.solution }}'
17+
18+
# Build outputs directly into staging directory
19+
- task: DotNetCoreCLI@2
20+
displayName: '.NET Build'
21+
inputs:
22+
command: build
23+
projects: '${{ parameters.solution }}'
24+
arguments: '--configuration ${{ parameters.configuration }} --output $(Build.ArtifactStagingDirectory) -p:PackageVersion="${{ parameters.nugetVersion }}"'
25+
26+
# Above build task generates a nuget package, this extra step packs into a -preview nuget with same version #
27+
# Extra parameter GeneratePackageOnBuild=false is needed for issue https://github.com/dotnet/sdk/pull/3473#issuecomment-516612070
28+
- task: DotNetCoreCLI@2
29+
displayName: '.NET Pack Preview Nuget'
30+
inputs:
31+
command: custom
32+
custom: pack
33+
projects: '${{ parameters.solution }}'
34+
arguments: '--configuration ${{ parameters.configuration }} --output $(Build.ArtifactStagingDirectory) -p:PackageVersion="${{ parameters.nugetVersion }}-preview" -p:GeneratePackageOnBuild=false'
35+
36+
- task: DotNetCoreCLI@2
37+
displayName: '.NET Test'
38+
inputs:
39+
command: test
40+
projects: '${{ parameters.solution }}'
41+
arguments: '--configuration ${{ parameters.configuration }}'
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
parameters:
2+
configuration: ''
3+
4+
steps:
5+
# .NET Core 2.1 for CodeSign
6+
- task: UseDotNet@2
7+
displayName: 'Install .NET Core SDK 2.1.x for CodeSign'
8+
inputs:
9+
version: '2.1.x'
10+
11+
- task: EsrpCodeSigning@1
12+
displayName: 'Nuget Code Signing'
13+
inputs:
14+
ConnectedServiceName: 'Code Signing'
15+
FolderPath: '$(Build.ArtifactStagingDirectory)'
16+
Pattern: '*.nupkg'
17+
signConfigType: 'inlineSignParams'
18+
inlineOperation: |
19+
[
20+
{
21+
"keyCode": "CP-401405",
22+
"operationSetCode": "NuGetSign",
23+
"parameters": [ ],
24+
"toolName": "sign",
25+
"toolVersion": "1.0"
26+
},
27+
{
28+
"keyCode": "CP-401405",
29+
"operationSetCode": "NuGetVerify",
30+
"parameters": [ ],
31+
"toolName": "sign",
32+
"toolVersion": "1.0"
33+
}
34+
]
35+
SessionTimeout: '60'
36+
MaxConcurrency: '50'
37+
MaxRetryAttempts: '5'
38+
39+
- task: PublishPipelineArtifact@1
40+
displayName: 'Publish Pipeline Artifact'
41+
inputs:
42+
targetPath: '$(Build.ArtifactStagingDirectory)'
43+
artifactName: 'drop'

src/SqlBinding/SqlAsyncCollector.cs

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -333,7 +333,7 @@ public async static Task<TableInformation> RetrieveTableInformationAsync(SqlConn
333333
{
334334
while (await rdr.ReadAsync())
335335
{
336-
columnDefinitionsFromSQL.Add(rdr[ColumnName].ToString(), rdr[ColumnDefinition].ToString());
336+
columnDefinitionsFromSQL.Add(rdr[ColumnName].ToString().ToLowerInvariant(), rdr[ColumnDefinition].ToString());
337337
}
338338
}
339339
}
@@ -358,7 +358,7 @@ public async static Task<TableInformation> RetrieveTableInformationAsync(SqlConn
358358
{
359359
while (await rdr.ReadAsync())
360360
{
361-
primaryKeys.Add(rdr[ColumnName].ToString());
361+
primaryKeys.Add(rdr[ColumnName].ToString().ToLowerInvariant());
362362
}
363363
}
364364
}
@@ -382,7 +382,7 @@ public async static Task<TableInformation> RetrieveTableInformationAsync(SqlConn
382382
// 3. Match SQL Primary Key column names to POCO field/property objects. Ensure none are missing.
383383
IEnumerable<MemberInfo> primaryKeyFields = typeof(T).GetMembers().Where(f => primaryKeys.Contains(f.Name, StringComparer.OrdinalIgnoreCase));
384384
IEnumerable<string> primaryKeysFromPOCO = primaryKeyFields.Select(f => f.Name);
385-
var missingFromPOCO = primaryKeys.Except(primaryKeysFromPOCO);
385+
var missingFromPOCO = primaryKeys.Except(primaryKeysFromPOCO, StringComparer.OrdinalIgnoreCase);
386386
if (missingFromPOCO.Any())
387387
{
388388
string message = $"All primary keys for SQL table '{tableName}' and schema '{schema}' need to be found in '{typeof(T)}.' Missing primary keys: [{string.Join(",", missingFromPOCO)}]";
@@ -416,7 +416,10 @@ protected override IList<JsonProperty> CreateProperties(Type type, MemberSeriali
416416
{
417417
if (properties.ContainsKey(column.Key))
418418
{
419-
propertiesToSerialize.Add(properties[column.Key]);
419+
// Lower-case the property name during serialization to match SQL casing
420+
var sqlColumn = properties[column.Key];
421+
sqlColumn.PropertyName = sqlColumn.PropertyName.ToLowerInvariant();
422+
propertiesToSerialize.Add(sqlColumn);
420423
}
421424
}
422425

src/SqlBinding/SqlBinding.csproj

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@
1414
<PackageId>Microsoft.Azure.WebJobs.Extensions.Sql</PackageId>
1515
<PublishRepositoryUrl>true</PublishRepositoryUrl>
1616
<EmbedUntrackedSources>true</EmbedUntrackedSources>
17-
<Version>1.0.0-preview3</Version>
1817
</PropertyGroup>
1918

2019
<ItemGroup>

0 commit comments

Comments
 (0)