Ejemplo n.º 1
0
		/// <summary>
		///     Создает значение по умолчанию
		/// </summary>
		/// <param name="dbField"></param>
		/// <param name="attr"></param>
		/// <param name="e"></param>
		/// <returns></returns>
		public static DefaultValue Create(Field dbField, string attr, XElement e){
			var result = new DefaultValue();
			result.DefaultValueType = DbDefaultValueType.Native;
			if (string.IsNullOrWhiteSpace(attr)){
				if (dbField.DataType.IsString){
					result.Value = "";
				}else if (dbField.DataType.IsDateTime){
					result.Value = "('19000101')";
				}else if (dbField.DataType.IsBool){
					result.Value = false;
				}
				else{
					result.Value = 0;
				}
				result.IsDefault = true;
			}
			else{
				if (attr.Contains("'") || attr.Contains("(")){
					result.Value = attr;
					result.DefaultValueType = DbDefaultValueType.Expression;
				}
				else{
					if (dbField.DataType.IsString){
						result.Value = attr;
					}
					else if (dbField.DataType.IsDateTime){
						try{
							attr.ToDate();
							result.DefaultValueType = DbDefaultValueType.Native;

							result.Value = attr;
						}
						catch{
							result.DefaultValueType = DbDefaultValueType.Expression;

							result.Value = attr;
						}
					} else {
						try {
							result.Value = attr.ToDecimal();
						} catch {
							result.DefaultValueType = DbDefaultValueType.Expression;
							result.Value = attr;
						}
					}
				}
				result.IsDefault = false;
			}
			return result;
		}
Ejemplo n.º 2
0
		private void ProcessInvalidFieldReferenceError(Field reference){
			var error = new BSharpError{
				Class = reference.Table.TargetClass,
				Level = ErrorLevel.Error,
				Xml = reference.Definition,
				Message =
					"Не могу найти в модели целевого поля таблицы для поля " + reference.Name + " объекта " +
					reference.Table.FullCodeName + " с ссылкой на " + reference.ReferenceTable + " (" + reference.ReferenceField + ")"
			};
			Errors.Add(error);
			Context.RegisterError(error);
		}