/// <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"); } }
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)); }
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()); }
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 })); }