Skip to content
This repository was archived by the owner on Dec 24, 2022. It is now read-only.

Commit 2131854

Browse files
authored
Merge pull request #589 from sl33kr/master
Allow ORMLite Extensions to be used without global dialect provider.
2 parents 76af08e + f5ab11e commit 2131854

File tree

3 files changed

+75
-7
lines changed

3 files changed

+75
-7
lines changed

src/ServiceStack.OrmLite.SqlServer/SqlServerOrmLiteDialectProvider.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -114,10 +114,10 @@ public void EnsureUtc(bool shouldEnsureUtc)
114114
public override bool DoesTableExist(IDbCommand dbCmd, string tableName, string schema = null)
115115
{
116116
var sql = "SELECT COUNT(*) FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = {0}"
117-
.SqlFmt(tableName);
117+
.SqlFmt(this, tableName);
118118

119119
if (schema != null)
120-
sql += " AND TABLE_SCHEMA = {0}".SqlFmt(schema);
120+
sql += " AND TABLE_SCHEMA = {0}".SqlFmt(this, schema);
121121

122122
var result = dbCmd.ExecLongScalar(sql);
123123

@@ -127,7 +127,7 @@ public override bool DoesTableExist(IDbCommand dbCmd, string tableName, string s
127127
public override bool DoesColumnExist(IDbConnection db, string columnName, string tableName, string schema = null)
128128
{
129129
var sql = "SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = @tableName AND COLUMN_NAME = @columnName"
130-
.SqlFmt(tableName, columnName);
130+
.SqlFmt(this, tableName, columnName);
131131

132132
if (schema != null)
133133
sql += " AND TABLE_SCHEMA = @schema";
Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
using System.Configuration;
2+
using NUnit.Framework;
3+
using ServiceStack.DataAnnotations;
4+
using ServiceStack.OrmLite.SqlServer;
5+
6+
namespace ServiceStack.OrmLite.SqlServerTests
7+
{
8+
public class TypedExtensionTests
9+
{
10+
public class TestDao
11+
{
12+
[PrimaryKey]
13+
public int Id { get; set; }
14+
15+
public string Thing { get; set; }
16+
}
17+
18+
private IOrmLiteDialectProvider provider;
19+
private OrmLiteConnectionFactory factory;
20+
21+
[OneTimeSetUp]
22+
public void Setup()
23+
{
24+
provider = new SqlServer2014OrmLiteDialectProvider();
25+
factory = new OrmLiteConnectionFactory(ConfigurationManager.ConnectionStrings["testDb"].ConnectionString, provider, false);
26+
}
27+
28+
[OneTimeTearDown]
29+
public void Teardown()
30+
{
31+
OrmLiteConfig.DialectProvider = provider;
32+
33+
using (var connection = factory.OpenDbConnection())
34+
{
35+
if (connection.TableExists<TestDao>())
36+
{
37+
connection.DropTable<TestDao>();
38+
}
39+
}
40+
}
41+
42+
[Test]
43+
public void GivenAnOrmLiteTypedConnectionFactory_WhenUsingOrmLiteExtensionsAndGlobalProviderNotSet_ThenArgumentNullExceptionIsNotThrown()
44+
{
45+
using (var connection = factory.OpenDbConnection())
46+
{
47+
Assert.That(() =>
48+
{
49+
connection.CreateTableIfNotExists<TestDao>();
50+
51+
var dao = new TestDao {Id = 1, Thing = "Thing"};
52+
53+
connection.Insert(dao);
54+
connection.SingleById<TestDao>(1);
55+
56+
dao.Thing = "New Thing";
57+
58+
connection.Update(dao, d => d.Id == dao.Id);
59+
60+
connection.Delete(dao);
61+
62+
connection.DropTable<TestDao>();
63+
64+
}, Throws.Nothing);
65+
}
66+
}
67+
}
68+
}

src/ServiceStack.OrmLite/OrmLiteDialectProviderBase.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -503,7 +503,7 @@ public virtual string ToSelectStatement(Type tableType, string sqlFilter, params
503503
&& sqlFilter.TrimStart().StartsWith(SelectStatement, StringComparison.OrdinalIgnoreCase);
504504

505505
if (isFullSelectStatement)
506-
return sqlFilter.SqlFmt(filterParams);
506+
return sqlFilter.SqlFmt(this, filterParams);
507507

508508
var modelDef = tableType.GetModelDefinition();
509509
var sql = StringBuilderCache.Allocate();
@@ -512,7 +512,7 @@ public virtual string ToSelectStatement(Type tableType, string sqlFilter, params
512512
if (string.IsNullOrEmpty(sqlFilter))
513513
return StringBuilderCache.ReturnAndFree(sql);
514514

515-
sqlFilter = sqlFilter.SqlFmt(filterParams);
515+
sqlFilter = sqlFilter.SqlFmt(this, filterParams);
516516
if (!sqlFilter.StartsWith("ORDER ", StringComparison.OrdinalIgnoreCase)
517517
&& !sqlFilter.StartsWith("LIMIT ", StringComparison.OrdinalIgnoreCase))
518518
{
@@ -1184,15 +1184,15 @@ public virtual string ToDeleteStatement(Type tableType, string sqlFilter, params
11841184
&& sqlFilter.Substring(0, deleteStatement.Length).ToUpper().Equals(deleteStatement);
11851185

11861186
if (isFullDeleteStatement)
1187-
return sqlFilter.SqlFmt(filterParams);
1187+
return sqlFilter.SqlFmt(this, filterParams);
11881188

11891189
var modelDef = tableType.GetModelDefinition();
11901190
sql.Append($"DELETE FROM {GetQuotedTableName(modelDef)}");
11911191

11921192
if (string.IsNullOrEmpty(sqlFilter))
11931193
return StringBuilderCache.ReturnAndFree(sql);
11941194

1195-
sqlFilter = sqlFilter.SqlFmt(filterParams);
1195+
sqlFilter = sqlFilter.SqlFmt(this, filterParams);
11961196
sql.Append(" WHERE ");
11971197
sql.Append(sqlFilter);
11981198

0 commit comments

Comments
 (0)