Skip to content

Commit 5bf97f0

Browse files
committed
Added support to NEWID() expression.
1 parent 813f7ad commit 5bf97f0

File tree

4 files changed

+31
-1
lines changed

4 files changed

+31
-1
lines changed

Diff for: Lib/CSQLQueryExpress/CSQLQueryExpress.csproj

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
<PropertyGroup>
44
<TargetFramework>netstandard2.0</TargetFramework>
55
<Title>CSQLQueryExpress</Title>
6-
<Version>1.4.3</Version>
6+
<Version>1.4.4</Version>
77
<Description>A simple c# library to compile TSQL queries</Description>
88
<PackageProjectUrl></PackageProjectUrl>
99
<PackageReadmeFile>README.md</PackageReadmeFile>

Diff for: Lib/CSQLQueryExpress/Compiler/SQLQueryTranslator.cs

+6
Original file line numberDiff line numberDiff line change
@@ -356,6 +356,12 @@ private Expression VisitSysMethodCall(MethodCallExpression node)
356356

357357
return node;
358358
}
359+
else if (node.Method.Name == nameof(Sys.NewID))
360+
{
361+
_queryBuilder.Append($"NEWID()");
362+
363+
return node;
364+
}
359365

360366
throw new NotSupportedException(string.Format("The method '{0}' is not supported.", node.Method.Name));
361367
}

Diff for: Lib/CSQLQueryExpress/Statements/Sys.cs

+5
Original file line numberDiff line numberDiff line change
@@ -53,5 +53,10 @@ public static DateTime UtcDateTime()
5353
{
5454
return default;
5555
}
56+
57+
public static Guid NewID()
58+
{
59+
return default;
60+
}
5661
}
5762
}

Diff for: Tests/CSQLQueryExpress.Tests/UnitTests/QuerySelectUnitTest.cs

+19
Original file line numberDiff line numberDiff line change
@@ -361,6 +361,25 @@ public void TestStatement11()
361361
Assert.DoesNotThrow(() => queryCommand.ToList());
362362
}
363363

364+
[Test]
365+
public void TestStatement12()
366+
{
367+
var query = new SQLQuery()
368+
.From<dbo.Products>()
369+
.Select(p => Sys.NewID(), p => p.ProductID, p => p.ProductName);
370+
371+
var compiledQuery = query.Compile();
372+
373+
Assert.That(compiledQuery.Parameters.Count, Is.EqualTo(0));
374+
375+
Assert.That(compiledQuery.Statement.Replace(Environment.NewLine, string.Empty),
376+
Is.EqualTo(@"SELECT NEWID(), _t0.[ProductID], _t0.[ProductName] FROM [dbo].[Products] AS _t0"));
377+
378+
var queryCommand = new SQLQueryCommandReader(ConnectionString, compiledQuery);
379+
380+
Assert.DoesNotThrow(() => queryCommand.ToList());
381+
}
382+
364383
private string GetSQLStatement([CallerMemberName] string memeberName = null)
365384
{
366385
var statement = File.ReadAllText($@"UnitTests\SelectStatements\{memeberName}.txt");

0 commit comments

Comments
 (0)