Exemplo n.º 1
0
 /// <summary>
 /// 1対1で対応するテーブルカラムが存在する場合、NULL、DEFAULT、SQLリテラル初期値の何れを返すかを決定する
 /// </summary>
 /// <param name="aSqlLiteralType">SQLリテラル型</param>
 /// <param name="aColumnInfo">1対1で対応するテーブルカラム</param>
 /// <returns></returns>
 /// <remarks></remarks>
 private string NullOrDefaultValue(SqlLiteralType aSqlLiteralType
                                   , ColumnInfo aColumnInfo)
 {
     if (aColumnInfo == null)
     {
         ////変換先の列のメタ情報がわからない場合、SQLリテラルの初期値を格納する
         //return aSqlLiteralType.DefaultValue
         //変換先の列のメタ情報がわからない場合、NULLを格納する
         return("NULL");
     }
     else if (!aColumnInfo.Nullable.HasValue || !aColumnInfo.Nullable.Value)
     {
         //変換先の列がNOT NULLの場合
         if (string.IsNullOrEmpty(aColumnInfo.DefaultValue))
         {
             ////NOT NULLかつDEFAULT値が設定されていない場合、SQLリテラルの初期値を格納する
             //return aSqlLiteralType.DefaultValue
             //NOT NULLかつDEFAULT値が設定されていない場合、
             //プロパティ値の設定誤りになるのでNULLを格納しSQLの実行エラーにする
             return("NULL");
         }
         return("DEFAULT");
     }
     else
     {
         //変換先の列がNULL可能の場合
         return("NULL");
     }
 }
Exemplo n.º 2
0
        public string CastToSqlLiteralType(object propertyValue
                                           , ViewColumnInfo aViewColumnInfo
                                           , ColumnInfo aColumnInfo = null)
        {
            //プロパティの取得元SELECT句のデータ型から、対応するSQLリテラル型を決める
            SqlLiteralType sqlLiteralType = _dataTypeMapper.GetSqlLiteralTypeOf(aViewColumnInfo);

            //propertyTypeを生成する
            PropertyType aPropertyType = null;

            //propertyValueがnullまたはNULL表現値の場合、"NULL", "DEFAULT", SQLリテラル初期値のいずれかを返す
            if (propertyValue == null)
            {
                //null、またはNull許容型にnullが格納された値の場合
                return(this.NullOrDefaultValue(sqlLiteralType, aColumnInfo));
            }
            else
            {
                aPropertyType = this.GetPropertyType(propertyValue.GetType());
                if (aPropertyType.IsNullValue(propertyValue))
                {
                    return(this.NullOrDefaultValue(sqlLiteralType, aColumnInfo));
                }
            }

            //プロパティ型から、SQLリテラル型にキャスト処理を行う
            return(sqlLiteralType.CastFrom(aPropertyType, aColumnInfo, propertyValue));
        }
Exemplo n.º 3
0
        private string AfterCast(SqlLiteralType sqlLiteralType
                                 , ColumnInfo aColumnInfo
                                 , string sqlLiteralValue)
        {
            MethodInfo methodInfo = _castEditorType.GetMethod("AfterCast"
                                                              , new System.Type[] { sqlLiteralType.GetType(),
                                                                                    this.GetType(),
                                                                                    typeof(ColumnInfo),
                                                                                    typeof(string) });

            return(methodInfo.Invoke(_castEditor,
                                     new object[] { sqlLiteralType,
                                                    this,
                                                    aColumnInfo,
                                                    sqlLiteralValue }).ToString());
        }
Exemplo n.º 4
0
        private object BeforeCast(SqlLiteralType sqlLiteralType
                                  , ColumnInfo aColumnInfo
                                  , object propertyValue)
        {
            MethodInfo methodInfo = _castEditorType.GetMethod("BeforeCast"
                                                              , new System.Type[] { sqlLiteralType.GetType(),
                                                                                    this.GetType(),
                                                                                    typeof(ColumnInfo),
                                                                                    typeof(object) });

            return(methodInfo.Invoke(_castEditor,
                                     new object[] { sqlLiteralType,
                                                    this,
                                                    aColumnInfo,
                                                    propertyValue }));
        }