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

Commit 10b19cf

Browse files
authored
Merge pull request #548 from KevinHoward/master
Fixed regression caused by last commit and fixed root issue.
2 parents 281b48a + f93f345 commit 10b19cf

File tree

6 files changed

+64
-12
lines changed

6 files changed

+64
-12
lines changed

src/ServiceStack.OrmLite.SqlServer/SqlServer2012OrmLiteDialectProvider.cs

Lines changed: 38 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
1-
using ServiceStack.Text;
1+
using System.Data;
2+
using System.Text;
3+
using ServiceStack.Text;
24

35
namespace ServiceStack.OrmLite.SqlServer
46
{
@@ -39,5 +41,40 @@ public override string ToSelectStatement(ModelDefinition modelDef,
3941

4042
return StringBuilderCache.ReturnAndFree(sb);
4143
}
44+
45+
public override void AppendFieldCondition(StringBuilder sqlFilter, FieldDefinition fieldDef, IDbCommand cmd)
46+
{
47+
if (!isSpatialField(fieldDef))
48+
{
49+
base.AppendFieldCondition(sqlFilter, fieldDef, cmd);
50+
}
51+
else
52+
{
53+
sqlFilter
54+
.Append(GetQuotedColumnName(fieldDef.FieldName))
55+
.Append(".STEquals(")
56+
.Append(this.GetParam(SanitizeFieldNameForParamName(fieldDef.FieldName)))
57+
.Append(") = 1");
58+
59+
AddParameter(cmd, fieldDef);
60+
}
61+
}
62+
63+
public override void AppendNullFieldCondition(StringBuilder sqlFilter, FieldDefinition fieldDef)
64+
{
65+
if (!isSpatialField(fieldDef))
66+
{
67+
base.AppendNullFieldCondition(sqlFilter, fieldDef);
68+
}
69+
else
70+
{
71+
sqlFilter
72+
.Append(GetQuotedColumnName(fieldDef.FieldName))
73+
.Append(".IsNull = 1");
74+
}
75+
}
76+
77+
private bool isSpatialField(FieldDefinition fieldDef) =>
78+
fieldDef.FieldType.Name == "SqlGeography" || fieldDef.FieldType.Name == "SqlGeometry";
4279
}
4380
}

src/ServiceStack.OrmLite.SqlServerTests/Converters/ConvertersOrmLiteTestBase.cs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,10 +40,12 @@ public void Log(string text)
4040
Console.WriteLine(text);
4141
}
4242

43-
public virtual IDbConnection OpenDbConnection(string connString = null)
43+
public virtual IDbConnection OpenDbConnection(string connString = null, IOrmLiteDialectProvider dialectProvider = null)
4444
{
45+
dialectProvider = dialectProvider ?? OrmLiteConfig.DialectProvider;
4546
connString = connString ?? ConnectionString;
46-
return connString.OpenDbConnection();
47+
48+
return new OrmLiteConnectionFactory(connString, dialectProvider).OpenDbConnection();
4749
}
4850
}
4951
}

src/ServiceStack.OrmLite.SqlServerTests/Expressions/ExpressionsTestBase.cs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,12 +16,14 @@ public void Setup()
1616
//Avoid painful refactor to change all tests to use a using pattern
1717
private IDbConnection db;
1818

19-
public override IDbConnection OpenDbConnection(string connString = null)
19+
public override IDbConnection OpenDbConnection(string connString = null, IOrmLiteDialectProvider dialectProvider = null)
2020
{
21+
dialectProvider = dialectProvider ?? OrmLiteConfig.DialectProvider;
22+
2123
if (db != null && db.State != ConnectionState.Open)
2224
db = null;
2325

24-
return db ?? (db = base.OpenDbConnection(connString));
26+
return db ?? (db = base.OpenDbConnection(connString, dialectProvider));
2527
}
2628

2729
[TearDown]

src/ServiceStack.OrmLite.SqlServerTests/Issues/DeleteWithGeoTypesIssue.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ public void Can_delete_entity_with_Geo_Type()
3434
var bar = db.Single<ModelWithGeo>(x => x.Name == "Bar");
3535
db.SqlScalar<int>(
3636
"DELETE FROM ModelWithGeo WHERE Id=@Id AND Location.STEquals(@Location) = 1",
37-
new { bar.Id, bar.Name, bar.Location });
37+
new { Id = bar.Id, Location = bar.Location });
3838

3939
Assert.That(db.Select<ModelWithGeo>().Count, Is.EqualTo(2));
4040

src/ServiceStack.OrmLite.SqlServerTests/OrmLiteTestBase.cs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,10 +24,11 @@ public void Log(string text)
2424
Console.WriteLine(text);
2525
}
2626

27-
public virtual IDbConnection OpenDbConnection(string connString = null)
27+
public virtual IDbConnection OpenDbConnection(string connString = null, IOrmLiteDialectProvider dialectProvider = null)
2828
{
29+
dialectProvider = dialectProvider ?? OrmLiteConfig.DialectProvider;
2930
connString = connString ?? ConnectionString;
30-
return connString.OpenDbConnection();
31+
return new OrmLiteConnectionFactory(connString, dialectProvider).OpenDbConnection();
3132
}
3233
}
3334
}

src/ServiceStack.OrmLite/OrmLiteDialectProviderBase.cs

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -764,7 +764,12 @@ public virtual bool PrepareParameterizedUpdateStatement<T>(IDbCommand cmd, IColl
764764
if (sql.Length > 0)
765765
sql.Append(", ");
766766

767-
AppendFieldCondition(sql, fieldDef, cmd);
767+
sql
768+
.Append(GetQuotedColumnName(fieldDef.FieldName))
769+
.Append("=")
770+
.Append(this.GetParam(SanitizeFieldNameForParamName(fieldDef.FieldName)));
771+
772+
AddParameter(cmd, fieldDef);
768773
}
769774
catch (Exception ex)
770775
{
@@ -782,6 +787,13 @@ public virtual bool PrepareParameterizedUpdateStatement<T>(IDbCommand cmd, IColl
782787
return hadRowVesion;
783788
}
784789

790+
public virtual void AppendNullFieldCondition(StringBuilder sqlFilter, FieldDefinition fieldDef)
791+
{
792+
sqlFilter
793+
.Append(GetQuotedColumnName(fieldDef.FieldName))
794+
.Append(" IS NULL");
795+
}
796+
785797
public virtual void AppendFieldCondition(StringBuilder sqlFilter, FieldDefinition fieldDef, IDbCommand cmd)
786798
{
787799
sqlFilter
@@ -827,9 +839,7 @@ public virtual bool PrepareParameterizedDeleteStatement<T>(IDbCommand cmd, IDict
827839
}
828840
else
829841
{
830-
sqlFilter
831-
.Append(GetQuotedColumnName(fieldDef.FieldName))
832-
.Append(" IS NULL");
842+
AppendNullFieldCondition(sqlFilter, fieldDef);
833843
}
834844
}
835845
catch (Exception ex)

0 commit comments

Comments
 (0)