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

Commit 67a1704

Browse files
committed
Fix creating tables with Schema's and RowVersion
1 parent 1339cee commit 67a1704

File tree

2 files changed

+33
-4
lines changed

2 files changed

+33
-4
lines changed

src/ServiceStack.OrmLite.Sqlite/SqliteOrmLiteDialectProviderBase.cs

Lines changed: 18 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -40,25 +40,31 @@ public override string ToPostDropTableStatement(ModelDefinition modelDef)
4040
{
4141
if (modelDef.RowVersion != null)
4242
{
43-
var triggerName = RowVersionTriggerFormat.Fmt(modelDef.ModelName);
43+
var triggerName = GetTriggerName(modelDef);
4444
return "DROP TRIGGER IF EXISTS {0}".Fmt(GetQuotedTableName(triggerName));
4545
}
4646

4747
return null;
4848
}
4949

50+
private string GetTriggerName(ModelDefinition modelDef)
51+
{
52+
return RowVersionTriggerFormat.Fmt(GetTableName(modelDef));
53+
}
54+
5055
public override string ToPostCreateTableStatement(ModelDefinition modelDef)
5156
{
5257
if (modelDef.RowVersion != null)
5358
{
54-
var triggerName = RowVersionTriggerFormat.Fmt(modelDef.ModelName);
59+
var triggerName = GetTriggerName(modelDef);
60+
var tableName = GetTableName(modelDef);
5561
var triggerBody = "UPDATE {0} SET {1} = OLD.{1} + 1 WHERE {2} = NEW.{2};".Fmt(
56-
modelDef.ModelName,
62+
tableName,
5763
modelDef.RowVersion.FieldName.SqlColumn(),
5864
modelDef.PrimaryKey.FieldName.SqlColumn());
5965

6066
var sql = "CREATE TRIGGER {0} BEFORE UPDATE ON {1} FOR EACH ROW BEGIN {2} END;".Fmt(
61-
triggerName, modelDef.ModelName, triggerBody);
67+
triggerName, tableName, triggerBody);
6268

6369
return sql;
6470
}
@@ -128,6 +134,14 @@ public override IDbConnection CreateConnection(string connectionString, Dictiona
128134

129135
protected abstract IDbConnection CreateConnection(string connectionString);
130136

137+
public virtual string GetTableName(ModelDefinition modelDef)
138+
{
139+
var tableName = NamingStrategy.GetTableName(modelDef.ModelName);
140+
return !modelDef.IsInSchema
141+
? tableName
142+
: string.Format("{0}_{1}", modelDef.Schema, tableName);
143+
}
144+
131145
public override string GetQuotedTableName(ModelDefinition modelDef)
132146
{
133147
if (!modelDef.IsInSchema)

tests/ServiceStack.OrmLite.Tests/RowVersionTests.cs

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -526,5 +526,20 @@ private void TouchRowBase(long rowId)
526526
row.Text = "Touched";
527527
db.Update(row);
528528
}
529+
530+
[Schema("Schema")]
531+
public class SchemaWithRowVersion
532+
{
533+
[AutoIncrement]
534+
public int Id { get; set; }
535+
public string RandomStringProperty { get; set; }
536+
public ulong RowVersion { get; set; }
537+
}
538+
539+
[Test]
540+
public void CreateNamedSchemaWithRowVersionClass()
541+
{
542+
db.DropAndCreateTable<SchemaWithRowVersion>();
543+
}
529544
}
530545
}

0 commit comments

Comments
 (0)