示例#1
0
        public void SetValuePropertyInfo(IDataBaseObject obj, IResultSet rs, IColumnInfo prop, ValueProperty destination)
        {
            var p = prop;

            SetDbBindColumn(obj, rs, p, destination.DbBindColumn);
            destination.Nullable = (p.IsNullable);

            if (p.NativeType == "timestamp")
            {
                destination.ReadOnly          = true;
                destination.MarkDirtyOnChange = false;
                destination.Undoable          = false;
                destination.DeclarationMode   = _currentUnit.Params.CreateTimestampPropertyMode;
            }

            if (_currentCslaObject.ObjectType == CslaObjectType.ReadOnlyObject)
            {
                destination.DeclarationMode = _currentUnit.Params.CreateReadOnlyObjectsPropertyMode;
                destination.ReadOnly        = true;
            }

            if (p.IsPrimaryKey)
            {
                if (p.IsIdentity)
                {
                    destination.PrimaryKey           = ValueProperty.UserDefinedKeyBehaviour.DBProvidedPK;
                    destination.ReadOnly             = true;
                    destination.PropSetAccessibility = AccessorVisibility.Default;
                }
                else
                {
                    destination.PrimaryKey = ValueProperty.UserDefinedKeyBehaviour.UserProvidedPK;
                }

                if (destination.PropertyType == TypeCodeEx.Guid)
                {
                    destination.DefaultValue = _currentUnit.Params.IDGuidDefaultValue;
                }
                else if (p.IsIdentity)
                {
                    switch (p.DbType)
                    {
                    case DbType.Int16:
                        destination.DefaultValue = _currentUnit.Params.IDInt16DefaultValue;
                        break;

                    case DbType.Int32:
                        destination.DefaultValue = _currentUnit.Params.IDInt32DefaultValue;
                        break;

                    case DbType.Int64:
                        destination.DefaultValue = _currentUnit.Params.IDInt64DefaultValue;
                        break;
                    }
                }
            }

            if (_currentUnit.Params.CreationDateColumn == p.ColumnName)
            {
                destination.ReadOnly             = true;
                destination.PropSetAccessibility = AccessorVisibility.Default;
                destination.DataAccess           = ValueProperty.DataAccessBehaviour.CreateOnly;
                if (destination.PropertyType == TypeCodeEx.SmartDate)
                {
                    destination.DefaultValue = _currentUnit.Params.LogDateAndTime
                                                   ? "new SmartDate(DateTime.Now)"
                                                   : "new SmartDate(DateTime.Today)";
                }
                else
                {
                    destination.DefaultValue = _currentUnit.Params.LogDateAndTime
                                                   ? "DateTime.Now"
                                                   : "DateTime.Today";
                }
            }
            else if (_currentUnit.Params.CreationUserColumn == p.ColumnName)
            {
                destination.ReadOnly             = true;
                destination.PropSetAccessibility = AccessorVisibility.Default;
                destination.DataAccess           = ValueProperty.DataAccessBehaviour.CreateOnly;
                destination.DefaultValue         = _currentUnit.Params.GetUserMethod;
            }
            else if (_currentUnit.Params.ChangedDateColumn == p.ColumnName)
            {
                destination.ReadOnly             = true;
                destination.PropSetAccessibility = AccessorVisibility.Default;
                if (CslaTemplateHelperCS.IsCreationDateColumnPresent(_currentCslaObject))
                {
                    destination.DefaultValue = "$" + _currentUnit.Params.CreationDateColumn;
                }
                else
                {
                    destination.DefaultValue = _currentUnit.Params.LogDateAndTime
                                                   ? "new SmartDate(DateTime.Now)"
                                                   : "new SmartDate(DateTime.Today)";
                }
            }
            else if (_currentUnit.Params.ChangedUserColumn == p.ColumnName)
            {
                destination.ReadOnly             = true;
                destination.PropSetAccessibility = AccessorVisibility.Default;
                if (CslaTemplateHelperCS.IsCreationUserColumnPresent(_currentCslaObject))
                {
                    destination.DefaultValue = "$" + _currentUnit.Params.CreationUserColumn;
                }
                else
                {
                    destination.DefaultValue = _currentUnit.Params.GetUserMethod;
                }
            }
            else if (_currentUnit.Params.DatesDefaultStringWithTypeConversion &&
                     (destination.PropertyType == TypeCodeEx.SmartDate ||
                      destination.PropertyType == TypeCodeEx.DateTime))
            {
                destination.BackingFieldType = destination.PropertyType;
                destination.PropertyType     = TypeCodeEx.String;
                destination.DeclarationMode  = PropertyDeclaration.ManagedWithTypeConversion;
            }
        }