Mercurial > pub > bltoolkit
comparison Source/Data/Sql/SqlField.cs @ 0:f990fcb411a9
Копия текущей версии из github
| author | cin |
|---|---|
| date | Thu, 27 Mar 2014 21:46:09 +0400 |
| parents | |
| children |
comparison
equal
deleted
inserted
replaced
| -1:000000000000 | 0:f990fcb411a9 |
|---|---|
| 1 using System; | |
| 2 using System.Collections.Generic; | |
| 3 using System.Text; | |
| 4 | |
| 5 namespace BLToolkit.Data.Sql | |
| 6 { | |
| 7 using DataAccess; | |
| 8 using Mapping; | |
| 9 | |
| 10 public class SqlField : IChild<ISqlTableSource>, ISqlExpression | |
| 11 { | |
| 12 public SqlField() | |
| 13 { | |
| 14 } | |
| 15 | |
| 16 public SqlField(SqlField field) | |
| 17 : this(field.SystemType, field.Name, field.PhysicalName, field.Nullable, field.PrimaryKeyOrder, field._nonUpdatableAttribute, field.MemberMapper) | |
| 18 { | |
| 19 } | |
| 20 | |
| 21 public SqlField( | |
| 22 Type systemType, | |
| 23 string name, | |
| 24 string physicalName, | |
| 25 bool nullable, | |
| 26 int pkOrder, | |
| 27 NonUpdatableAttribute nonUpdatableAttribute, | |
| 28 MemberMapper memberMapper) | |
| 29 { | |
| 30 SystemType = systemType; | |
| 31 Alias = name.Replace('.', '_'); | |
| 32 Name = name; | |
| 33 Nullable = nullable; | |
| 34 PrimaryKeyOrder = pkOrder; | |
| 35 _memberMapper = memberMapper; | |
| 36 _physicalName = physicalName; | |
| 37 _nonUpdatableAttribute = nonUpdatableAttribute; | |
| 38 } | |
| 39 | |
| 40 public Type SystemType { get; set; } | |
| 41 public string Alias { get; set; } | |
| 42 public string Name { get; set; } | |
| 43 public bool Nullable { get; set; } | |
| 44 public int PrimaryKeyOrder { get; set; } | |
| 45 public ISqlTableSource Table { get; private set; } | |
| 46 | |
| 47 readonly MemberMapper _memberMapper; | |
| 48 public MemberMapper MemberMapper | |
| 49 { | |
| 50 get { return _memberMapper; } | |
| 51 } | |
| 52 | |
| 53 private string _physicalName; | |
| 54 public string PhysicalName | |
| 55 { | |
| 56 get { return _physicalName ?? Name; } | |
| 57 set { _physicalName = value; } | |
| 58 } | |
| 59 | |
| 60 public bool IsIdentity { get { return _nonUpdatableAttribute != null && _nonUpdatableAttribute.IsIdentity; } } | |
| 61 public bool IsInsertable { get { return _nonUpdatableAttribute == null || !_nonUpdatableAttribute.OnInsert; } } | |
| 62 public bool IsUpdatable { get { return _nonUpdatableAttribute == null || !_nonUpdatableAttribute.OnUpdate; } } | |
| 63 | |
| 64 public bool IsPrimaryKey { get { return PrimaryKeyOrder != int.MinValue; } } | |
| 65 | |
| 66 readonly NonUpdatableAttribute _nonUpdatableAttribute; | |
| 67 | |
| 68 ISqlTableSource IChild<ISqlTableSource>.Parent { get { return Table; } set { Table = value; } } | |
| 69 | |
| 70 #region Overrides | |
| 71 | |
| 72 #if OVERRIDETOSTRING | |
| 73 | |
| 74 public override string ToString() | |
| 75 { | |
| 76 return ((IQueryElement)this).ToString(new StringBuilder(), new Dictionary<IQueryElement,IQueryElement>()).ToString(); | |
| 77 } | |
| 78 | |
| 79 #endif | |
| 80 | |
| 81 #endregion | |
| 82 | |
| 83 #region ISqlExpression Members | |
| 84 | |
| 85 public bool CanBeNull() | |
| 86 { | |
| 87 return Nullable; | |
| 88 } | |
| 89 | |
| 90 public bool Equals(ISqlExpression other, Func<ISqlExpression,ISqlExpression,bool> comparer) | |
| 91 { | |
| 92 return this == other; | |
| 93 } | |
| 94 | |
| 95 public int Precedence | |
| 96 { | |
| 97 get { return Sql.Precedence.Primary; } | |
| 98 } | |
| 99 | |
| 100 #endregion | |
| 101 | |
| 102 #region ISqlExpressionWalkable Members | |
| 103 | |
| 104 ISqlExpression ISqlExpressionWalkable.Walk(bool skipColumns, Func<ISqlExpression,ISqlExpression> func) | |
| 105 { | |
| 106 return func(this); | |
| 107 } | |
| 108 | |
| 109 #endregion | |
| 110 | |
| 111 #region IEquatable<ISqlExpression> Members | |
| 112 | |
| 113 bool IEquatable<ISqlExpression>.Equals(ISqlExpression other) | |
| 114 { | |
| 115 return this == other; | |
| 116 } | |
| 117 | |
| 118 #endregion | |
| 119 | |
| 120 #region ICloneableElement Members | |
| 121 | |
| 122 public ICloneableElement Clone(Dictionary<ICloneableElement, ICloneableElement> objectTree, Predicate<ICloneableElement> doClone) | |
| 123 { | |
| 124 if (!doClone(this)) | |
| 125 return this; | |
| 126 | |
| 127 Table.Clone(objectTree, doClone); | |
| 128 return objectTree[this]; | |
| 129 } | |
| 130 | |
| 131 #endregion | |
| 132 | |
| 133 #region IQueryElement Members | |
| 134 | |
| 135 public QueryElementType ElementType { get { return QueryElementType.SqlField; } } | |
| 136 | |
| 137 StringBuilder IQueryElement.ToString(StringBuilder sb, Dictionary<IQueryElement,IQueryElement> dic) | |
| 138 { | |
| 139 return sb | |
| 140 .Append('t') | |
| 141 .Append(Table.SourceID) | |
| 142 .Append('.') | |
| 143 .Append(Name); | |
| 144 } | |
| 145 | |
| 146 #endregion | |
| 147 } | |
| 148 } |
