-
Notifications
You must be signed in to change notification settings - Fork 5
/
Copy pathFieldPropertyInfo.cs
119 lines (109 loc) · 2.87 KB
/
FieldPropertyInfo.cs
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
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using System.Data.Common;
using System.Diagnostics.CodeAnalysis;
using Havit.Business.Query;
using Havit.Data.SqlServer;
namespace Havit.Business;
/// <summary>
/// Reprezentuje sloupec v databázi,
/// nese informace o daném sloupci a jeho vazbu na objektovou strukturu.
/// </summary>
public class FieldPropertyInfo : PropertyInfo, IFieldsBuilder, IOperand
{
/// <summary>
/// Název sloupce v databázi.
/// </summary>
public string FieldName
{
get
{
CheckInitialization();
return fieldName;
}
}
private string fieldName;
/// <summary>
/// Udává, zda je možné uložit null hodnotu.
/// </summary>
public bool Nullable
{
get
{
CheckInitialization();
return nullable;
}
}
private bool nullable;
/// <summary>
/// Typ sloupce v databázi.
/// </summary>
public SqlDbType FieldType
{
get
{
CheckInitialization();
return fieldType;
}
}
private SqlDbType fieldType;
/// <summary>
/// Udává, zda je sloupec primárním klíčem.
/// </summary>
public bool IsPrimaryKey
{
get
{
CheckInitialization();
return isPrimaryKey;
}
}
private bool isPrimaryKey;
/// <summary>
/// Maximální délka řetězce (u typů varchar, nvarchar, apod.), případně velikost datového typu (u číselných typů).
/// </summary>
public int MaximumLength
{
get
{
CheckInitialization();
return maximumLength;
}
}
private int maximumLength;
/// <summary>
/// Inicializuje instanci sloupce.
/// </summary>
/// <param name="owner">Nadřazený objectInfo.</param>
/// <param name="propertyName">Název property.</param>
/// <param name="fieldName">Název sloupce v databázy.</param>
/// <param name="isPrimaryKey">Indikuje, zda je sloupec primárním klíčem</param>
/// <param name="fieldType">Typ databázového sloupce.</param>
/// <param name="nullable">Indukuje, zda je povolena hodnota null.</param>
/// <param name="maximumLength">Maximální délka dat databázového sloupce.</param>
[SuppressMessage("SonarLint", "S1117", Justification = "Není chybou mít parametr metody stejného jména ve třídě.")]
public void Initialize(ObjectInfo owner, string propertyName, string fieldName, bool isPrimaryKey, SqlDbType fieldType, bool nullable, int maximumLength)
{
Initialize(owner, propertyName);
this.fieldName = fieldName;
this.nullable = nullable;
this.fieldType = fieldType;
this.isPrimaryKey = isPrimaryKey;
this.maximumLength = maximumLength;
}
/// <summary>
/// Vrátí řetězec pro vytažení daného sloupce z databáze.
/// </summary>
public virtual string GetSelectFieldStatement(DbCommand command)
{
CheckInitialization();
return "[" + fieldName + "]";
}
string IOperand.GetCommandValue(DbCommand command, SqlServerPlatform sqlServerPlatform)
{
CheckInitialization();
return "[" + fieldName + "]";
}
}