Skip to content

Commit 93640cc

Browse files
committed
Added more properties to the test entity
1 parent 4a2fe1b commit 93640cc

File tree

4 files changed

+22
-36
lines changed

4 files changed

+22
-36
lines changed

src/NHibernate.Test/NHSpecificTest/GH1300/Entity.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,5 +5,7 @@ class Entity
55
public virtual int Id { get; set; }
66
public virtual string Name { get; set; }
77
public virtual string AnsiName { get; set; }
8+
public virtual string FullText { get; set; }
9+
public virtual string AnsiFullText { get; set; }
810
}
911
}

src/NHibernate.Test/NHSpecificTest/GH1300/Fixture.cs

Lines changed: 10 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -70,13 +70,17 @@ public void InsertShouldUseMappedSize()
7070
using (var session = OpenSession())
7171
using (var transaction = session.BeginTransaction())
7272
{
73-
var e1 = new Entity { Name = "Al", AnsiName = "Al" };
73+
var e1 = new Entity { Name = "1", AnsiName = "2", FullText = "3", AnsiFullText = "4" };
7474
session.Save(e1);
7575
transaction.Commit();
76-
Assert.That(Driver.LastCommandParameters.First().SqlDbType, Is.EqualTo(SqlDbType.NVarChar));
77-
Assert.That(Driver.LastCommandParameters.First().Size, Is.EqualTo(3));
78-
Assert.That(Driver.LastCommandParameters.Last().SqlDbType, Is.EqualTo(SqlDbType.VarChar));
79-
Assert.That(Driver.LastCommandParameters.Last().Size, Is.EqualTo(3));
76+
Assert.That(Driver.LastCommandParameters.Single(x => (string) x.Value == "1").SqlDbType, Is.EqualTo(SqlDbType.NVarChar));
77+
Assert.That(Driver.LastCommandParameters.Single(x => (string) x.Value == "1").Size, Is.EqualTo(3));
78+
Assert.That(Driver.LastCommandParameters.Single(x => (string) x.Value == "2").SqlDbType, Is.EqualTo(SqlDbType.VarChar));
79+
Assert.That(Driver.LastCommandParameters.Single(x => (string) x.Value == "2").Size, Is.EqualTo(3));
80+
Assert.That(Driver.LastCommandParameters.Single(x => (string) x.Value == "3").SqlDbType, Is.EqualTo(SqlDbType.NVarChar));
81+
Assert.That(Driver.LastCommandParameters.Single(x => (string) x.Value == "3").Size, Is.EqualTo(MsSql2000Dialect.MaxSizeForClob));
82+
Assert.That(Driver.LastCommandParameters.Single(x => (string) x.Value == "4").SqlDbType, Is.EqualTo(SqlDbType.VarChar));
83+
Assert.That(Driver.LastCommandParameters.Single(x => (string) x.Value == "4").Size, Is.EqualTo(MsSql2000Dialect.MaxSizeForAnsiClob));
8084
}
8185
}
8286

@@ -139,27 +143,7 @@ public void MappedAsShouldUseExplicitSize()
139143
Assert.That(Driver.LastCommandParameters.First().SqlDbType, Is.EqualTo(SqlDbType.VarChar));
140144
}
141145
}
142-
143-
[Test]
144-
public void LongStringCausesClobSizedParameter()
145-
{
146-
Driver.ClearCommands();
147-
148-
using (var session = OpenSession())
149-
using (var transaction = session.BeginTransaction())
150-
{
151-
session.Query<Entity>().Where(x => x.Name == new string('x', MsSql2000Dialect.MaxSizeForLengthLimitedString + 1)).ToList();
152-
153-
Assert.That(Driver.LastCommandParameters.First().Size, Is.EqualTo(MsSql2000Dialect.MaxSizeForClob));
154-
Assert.That(Driver.LastCommandParameters.First().SqlDbType, Is.EqualTo(SqlDbType.NVarChar));
155-
156-
session.Query<Entity>().Where(x => x.AnsiName == new string('x', MsSql2000Dialect.MaxSizeForLengthLimitedAnsiString + 1)).ToList();
157-
158-
Assert.That(Driver.LastCommandParameters.First().Size, Is.EqualTo(MsSql2000Dialect.MaxSizeForAnsiClob));
159-
Assert.That(Driver.LastCommandParameters.First().SqlDbType, Is.EqualTo(SqlDbType.VarChar));
160-
}
161-
}
162-
146+
163147
[TestCase("Name", SqlDbType.NVarChar)]
164148
[TestCase("AnsiName", SqlDbType.VarChar)]
165149
public void HqlLikeShouldUseLargerSize(string property, SqlDbType expectedDbType)
Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
<?xml version="1.0" encoding="utf-8" ?>
22
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" assembly="NHibernate.Test" namespace="NHibernate.Test.NHSpecificTest.GH1300">
3-
4-
<class name="Entity">
5-
<id name="Id" generator="native" />
6-
<property name="Name" length="3"/>
7-
<property name="AnsiName" length="3" type="AnsiString"/>
8-
</class>
9-
3+
<class name="Entity">
4+
<id name="Id" generator="native" />
5+
<property name="Name" length="3"/>
6+
<property name="AnsiName" length="3" type="AnsiString"/>
7+
<property name="FullText" length="5000"/>
8+
<property name="AnsiFullText" length="10000" type="AnsiString"/>
9+
</class>
1010
</hibernate-mapping>

src/NHibernate/Driver/SqlClientDriver.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -304,19 +304,19 @@ public override bool SupportsMultipleQueries
304304
/// <inheritdoc />
305305
public override DateTime MinDate => new DateTime(1753, 1, 1);
306306

307-
public void AdjustParameterForValue(DbParameter parameter, SqlType sqlType, object value)
307+
public virtual void AdjustParameterForValue(DbParameter parameter, SqlType sqlType, object value)
308308
{
309309
if (value is string stringVal)
310310
{
311311
switch (parameter.DbType)
312312
{
313313
case DbType.AnsiString:
314314
case DbType.AnsiStringFixedLength:
315-
parameter.Size = IsAnsiText(parameter, sqlType) || stringVal.Length > MsSql2000Dialect.MaxSizeForLengthLimitedAnsiString ? MsSql2000Dialect.MaxSizeForAnsiClob : Math.Max(stringVal.Length, sqlType.LengthDefined ? sqlType.Length : parameter.Size);
315+
parameter.Size = IsAnsiText(parameter, sqlType) ? MsSql2000Dialect.MaxSizeForAnsiClob : Math.Max(stringVal.Length, sqlType.LengthDefined ? sqlType.Length : parameter.Size);
316316
break;
317317
case DbType.String:
318318
case DbType.StringFixedLength:
319-
parameter.Size = IsText(parameter, sqlType) || stringVal.Length > MsSql2000Dialect.MaxSizeForLengthLimitedString ? MsSql2000Dialect.MaxSizeForClob : Math.Max(stringVal.Length, sqlType.LengthDefined ? sqlType.Length : parameter.Size);
319+
parameter.Size = IsText(parameter, sqlType) ? MsSql2000Dialect.MaxSizeForClob : Math.Max(stringVal.Length, sqlType.LengthDefined ? sqlType.Length : parameter.Size);
320320
break;
321321
}
322322
}

0 commit comments

Comments
 (0)