forked from ServiceStack/ServiceStack
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathOracleStringConverters.cs
More file actions
55 lines (42 loc) · 1.77 KB
/
Copy pathOracleStringConverters.cs
File metadata and controls
55 lines (42 loc) · 1.77 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
using System;
using ServiceStack.DataAnnotations;
using ServiceStack.OrmLite.Converters;
namespace ServiceStack.OrmLite.Oracle.Converters
{
public class OracleStringConverter : StringConverter
{
public OracleStringConverter() : base(4000) {}
protected OracleStringConverter(int stringLength) : base(stringLength)
{
}
public override string MaxColumnDefinition => UseUnicode ? "NVARCHAR2(2000)" : "NVARCHAR2(4000)";
public override int MaxVarCharLength => UseUnicode ? 2000 : 4000;
public override string GetColumnDefinition(int? stringLength)
{
if (stringLength.GetValueOrDefault() == StringLengthAttribute.MaxText)
return MaxColumnDefinition;
var safeLength = Math.Min(stringLength.GetValueOrDefault(StringLength), UseUnicode ? 2000 : 4000);
return UseUnicode
? $"NVARCHAR({safeLength})"
: $"VARCHAR({safeLength})";
}
}
/// <summary>
///
/// </summary>
public class Oracle12StringConverter : StringConverter
{
public Oracle12StringConverter() : base(32767) {}
public override string MaxColumnDefinition => UseUnicode ? "NVARCHAR2(16383)" : "NVARCHAR2(32767)";
public override int MaxVarCharLength => UseUnicode ? 16383 : 32767;
public override string GetColumnDefinition(int? stringLength)
{
if (stringLength.GetValueOrDefault() == StringLengthAttribute.MaxText)
return MaxColumnDefinition;
var safeLength = Math.Min(stringLength.GetValueOrDefault(StringLength), UseUnicode ? 16383 : 32767);
return UseUnicode
? $"NVARCHAR({safeLength})"
: $"VARCHAR({safeLength})";
}
}
}