public RestmeDbColumnAttribute(string dbColumnName, RestmeDbColumnType type,
                                       [CallerMemberName] string callerMemberName = "")
        {
            if (dbColumnName.IsNullOrEmpty() && callerMemberName.IsNullOrEmpty())
            {
                throw new ArgumentNullException(nameof(dbColumnName));
            }

            DbColumnName = dbColumnName.IsNullOrEmpty() ? callerMemberName : dbColumnName;
            SetPropertiesByColumnType(type);
        }
        private void SetPropertiesByColumnType(RestmeDbColumnType type)
        {
            ColumnType = type;
            switch (type)
            {
            case RestmeDbColumnType.NormalColumn:
                InSelect = true;
                InUpdate = true;
                InInsert = true;
                InDelete = true;
                break;

            case RestmeDbColumnType.ForeignKey:
                InSelect = true;
                InUpdate = true;
                InInsert = true;
                InDelete = true;
                break;

            case RestmeDbColumnType.AutoGeneratedPrimaryKey:
                InSelect = true;
                InUpdate = false;
                InInsert = false;
                InDelete = true;
                break;

            case RestmeDbColumnType.ViewColumn:
                InSelect = true;
                InUpdate = false;
                InInsert = false;
                InDelete = true;
                break;

            case RestmeDbColumnType.NormalPrimaryKey:
                InSelect = true;
                InUpdate = true;
                InInsert = true;
                InDelete = true;
                break;

            default:
                throw new ArgumentOutOfRangeException(nameof(type), type, null);
            }
        }