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

Commit 9beeba7

Browse files
committed
Add support for custom index names
1 parent 0415860 commit 9beeba7

File tree

7 files changed

+13
-5
lines changed

7 files changed

+13
-5
lines changed

src/ServiceStack.OrmLite.Firebird/FirebirdOrmLiteDialectProvider.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -404,7 +404,7 @@ public override List<string> ToCreateIndexStatements(Type tableType)
404404
{
405405
if (!fieldDef.IsIndexed) continue;
406406

407-
var indexName = GetIndexName(
407+
var indexName = fieldDef.IndexName ?? GetIndexName(
408408
fieldDef.IsUniqueIndex, modelDef.ModelName, fieldDef.FieldName);
409409

410410
sqlIndexes.Add(

src/ServiceStack.OrmLite.Oracle/OracleOrmLiteDialectProvider.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -635,7 +635,7 @@ public override List<string> ToCreateIndexStatements(Type tableType)
635635
{
636636
if (!fieldDef.IsIndexed) continue;
637637

638-
var indexName = GetIndexName(
638+
var indexName = fieldDef.IndexName ?? GetIndexName(
639639
fieldDef.IsUniqueIndex,
640640
(modelDef.IsInSchema
641641
? modelDef.Schema + "_" + modelDef.ModelName

src/ServiceStack.OrmLite/FieldDefinition.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,8 @@ public class FieldDefinition
4747
public bool IsClustered { get; set; }
4848

4949
public bool IsNonClustered { get; set; }
50+
51+
public string IndexName { get; set; }
5052

5153
public bool IsRowVersion { get; set; }
5254

src/ServiceStack.OrmLite/OrmLiteConfigExtensions.cs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -148,8 +148,9 @@ internal static ModelDefinition GetModelDefinition(this Type modelType)
148148
AutoId = isAutoId,
149149
IsIndexed = !isPrimaryKey && isIndex,
150150
IsUniqueIndex = isUnique,
151-
IsClustered = indexAttr != null && indexAttr.Clustered,
152-
IsNonClustered = indexAttr != null && indexAttr.NonClustered,
151+
IsClustered = indexAttr?.Clustered == true,
152+
IsNonClustered = indexAttr?.NonClustered == true,
153+
IndexName = indexAttr?.Name,
153154
IsRowVersion = isRowVersion,
154155
IgnoreOnInsert = propertyInfo.HasAttribute<IgnoreOnInsertAttribute>(),
155156
IgnoreOnUpdate = propertyInfo.HasAttribute<IgnoreOnUpdateAttribute>(),

src/ServiceStack.OrmLite/OrmLiteDialectProviderBase.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1319,7 +1319,8 @@ public virtual List<string> ToCreateIndexStatements(Type tableType)
13191319
{
13201320
if (!fieldDef.IsIndexed) continue;
13211321

1322-
var indexName = GetIndexName(fieldDef.IsUniqueIndex, modelDef.ModelName.SafeVarName(), fieldDef.FieldName);
1322+
var indexName = fieldDef.IndexName
1323+
?? GetIndexName(fieldDef.IsUniqueIndex, modelDef.ModelName.SafeVarName(), fieldDef.FieldName);
13231324

13241325
sqlIndexes.Add(
13251326
ToCreateIndexStatement(fieldDef.IsUniqueIndex, indexName, modelDef, fieldDef.FieldName, isCombined: false, fieldDef: fieldDef));

tests/ServiceStack.OrmLite.Tests/OrmLiteCreateTableWithIndexesTests.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ public void Can_create_ModelWithIndexFields_table()
2929

3030
Assert.That(sql, Does.Contain(indexName));
3131
Assert.That(sql, Does.Contain(uniqueName));
32+
Assert.That(sql, Does.Contain("altname"));
3233
}
3334
}
3435

tests/ServiceStack.OrmLite.Tests/Shared/ModelWithIndexFields.cs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,5 +13,8 @@ public class ModelWithIndexFields
1313

1414
[Index(true)]
1515
public string UniqueName { get; set; }
16+
17+
[Index(Name = "altname")]
18+
public string Custom { get; set; }
1619
}
1720
}

0 commit comments

Comments
 (0)