From a7bc6b99491f76d71e44d5e1270fbe1227030b7a Mon Sep 17 00:00:00 2001 From: Grzegorz Russek Date: Fri, 24 May 2024 09:07:51 +0200 Subject: [PATCH] Added ability to set nolock with db.From(alias, nolock); --- AmalgamationTool/DynamORM.Amalgamation.cs | 25 +++++++++++++++++++++++ DynamORM.Tests/Select/ParserTests.cs | 23 +++++++++++++++++++++ DynamORM/DynamicDatabase.cs | 25 +++++++++++++++++++++++ 3 files changed, 73 insertions(+) diff --git a/AmalgamationTool/DynamORM.Amalgamation.cs b/AmalgamationTool/DynamORM.Amalgamation.cs index aaefba5..2c6c78a 100644 --- a/AmalgamationTool/DynamORM.Amalgamation.cs +++ b/AmalgamationTool/DynamORM.Amalgamation.cs @@ -1932,6 +1932,31 @@ namespace DynamORM return new DynamicSelectQueryBuilder(this).From(x => x(typeof(T)).As(alias)); } + /// Adds to the FROM clause using . + /// Type which can be represented in database. + /// use no lock. + /// This instance to permit chaining. + public virtual IDynamicSelectQueryBuilder From(bool noLock) + { + if (noLock) + return new DynamicSelectQueryBuilder(this).From(x => x(typeof(T)).NoLock()); + else + return new DynamicSelectQueryBuilder(this).From(x => x(typeof(T))); + } + + /// Adds to the FROM clause using . + /// Type which can be represented in database. + /// Table alias. + /// use no lock. + /// This instance to permit chaining. + public virtual IDynamicSelectQueryBuilder From(string alias, bool noLock) + { + if (noLock) + return new DynamicSelectQueryBuilder(this).From(x => x(typeof(T)).As(alias).NoLock()); + else + return new DynamicSelectQueryBuilder(this).From(x => x(typeof(T)).As(alias)); + } + /// Adds to the FROM clause using . /// Type which can be represented in database. /// This instance to permit chaining. diff --git a/DynamORM.Tests/Select/ParserTests.cs b/DynamORM.Tests/Select/ParserTests.cs index f7654de..a8c0f1e 100644 --- a/DynamORM.Tests/Select/ParserTests.cs +++ b/DynamORM.Tests/Select/ParserTests.cs @@ -29,6 +29,7 @@ using System.Linq; using DynamORM.Builders; using DynamORM.Builders.Implementation; +using DynamORM.Tests.Helpers; using Microsoft.VisualStudio.TestTools.UnitTesting; namespace DynamORM.Tests.Select @@ -75,6 +76,28 @@ namespace DynamORM.Tests.Select Assert.AreEqual("SELECT * FROM \"dbo\".\"Users\"", cmd.CommandText()); } + /// + /// Tests from typed method. + /// + [TestMethod] + public void TestFromGetTyped() + { + IDynamicSelectQueryBuilder cmd = Database.From(); + + Assert.AreEqual("SELECT * FROM \"users\"", cmd.CommandText()); + } + + /// + /// Tests from typed method. + /// + [TestMethod] + public void TestFromGetTypedAs() + { + IDynamicSelectQueryBuilder cmd = Database.From("u"); + + Assert.AreEqual("SELECT * FROM \"users\" AS u", cmd.CommandText()); + } + /// /// Tests from method with multi tables. /// diff --git a/DynamORM/DynamicDatabase.cs b/DynamORM/DynamicDatabase.cs index 639bc92..95bbfe5 100644 --- a/DynamORM/DynamicDatabase.cs +++ b/DynamORM/DynamicDatabase.cs @@ -381,6 +381,31 @@ namespace DynamORM return new DynamicSelectQueryBuilder(this).From(x => x(typeof(T)).As(alias)); } + /// Adds to the FROM clause using . + /// Type which can be represented in database. + /// use no lock. + /// This instance to permit chaining. + public virtual IDynamicSelectQueryBuilder From(bool noLock) + { + if (noLock) + return new DynamicSelectQueryBuilder(this).From(x => x(typeof(T)).NoLock()); + else + return new DynamicSelectQueryBuilder(this).From(x => x(typeof(T))); + } + + /// Adds to the FROM clause using . + /// Type which can be represented in database. + /// Table alias. + /// use no lock. + /// This instance to permit chaining. + public virtual IDynamicSelectQueryBuilder From(string alias, bool noLock) + { + if (noLock) + return new DynamicSelectQueryBuilder(this).From(x => x(typeof(T)).As(alias).NoLock()); + else + return new DynamicSelectQueryBuilder(this).From(x => x(typeof(T)).As(alias)); + } + /// Adds to the FROM clause using . /// Type which can be represented in database. /// This instance to permit chaining.