From: Michael D. <mik...@us...> - 2004-04-30 18:39:55
|
Update of /cvsroot/nhibernate/nhibernate/src/NHibernate/Type In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv10155/Type Modified Files: TypeFactory.cs Added Files: AnsiStringType.cs Log Message: Added AnsiStringType so there could be a mapping to a varchar column. Index: TypeFactory.cs =================================================================== RCS file: /cvsroot/nhibernate/nhibernate/src/NHibernate/Type/TypeFactory.cs,v retrieving revision 1.29 retrieving revision 1.30 diff -C2 -d -r1.29 -r1.30 *** TypeFactory.cs 29 Apr 2004 14:00:54 -0000 1.29 --- TypeFactory.cs 30 Apr 2004 18:39:47 -0000 1.30 *************** *** 23,27 **** /// a reference to the IType. /// </remarks> - public class TypeFactory { --- 23,26 ---- *************** *** 85,88 **** --- 84,88 ---- //basicTypes.Add(NHibernate.Timezone.Name, NHibernate.Timezone); + TypeFactory.GetAnsiStringType(); TypeFactory.GetBinaryType(); TypeFactory.GetBooleanType(); *************** *** 109,112 **** --- 109,113 ---- TypeFactory.GetTimeSpanType(); + getTypeDelegatesWithLength.Add(TypeFactory.GetAnsiStringType().Name, new GetNullableTypeWithLength(GetAnsiStringType)); getTypeDelegatesWithLength.Add(TypeFactory.GetBinaryType().Name, new GetNullableTypeWithLength(GetBinaryType)); getTypeDelegatesWithLength.Add(TypeFactory.GetDoubleType().Name, new GetNullableTypeWithLength(GetDoubleType)); *************** *** 381,384 **** --- 382,413 ---- } + public static NullableType GetAnsiStringType() + { + string key = typeof(AnsiStringType).FullName; + + NullableType returnType = (NullableType)typeByTypeOfName[key]; + if(returnType==null) + { + returnType = GetAnsiStringType(255); + AddToTypeOfName(key, returnType); + } + + return returnType; + } + + public static NullableType GetAnsiStringType(int length) + { + string key = GetKeyForLengthBased(typeof(AnsiStringType).FullName, length); + + NullableType returnType = (NullableType)typeByTypeOfName[key]; + if(returnType==null) + { + returnType = new AnsiStringType(SqlTypeFactory.GetAnsiString(length)); + AddToTypeOfNameWithLength(key, returnType); + } + return returnType; + } + + /// <summary> /// Gets the BinaryType with the default size. --- NEW FILE: AnsiStringType.cs --- using System; using System.Data; using NHibernate.SqlTypes; using NHibernate.Util; namespace NHibernate.Type { /// <summary> /// Maps a <see cref="System.String"/> Property /// to a <see cref="DbType.AnsiString"/> column. /// </summary> public class AnsiStringType : ImmutableType, IDiscriminatorType { internal AnsiStringType(AnsiStringSqlType sqlType) : base(sqlType) {} public override object Get(IDataReader rs, int index) { return rs.GetString(index); } public override object Get(IDataReader rs, string name) { return Get(rs, rs.GetOrdinal(name)); } public override System.Type ReturnedClass { get { return typeof(string); } } public override void Set(IDbCommand st, object value, int index) { IDataParameter parm = st.Parameters[index] as IDataParameter; parm.Value = value; } public override string Name { get { return "AnsiString"; } } public string ObjectToSQLString(object value) { return "'" + (string) value + "'"; } public object StringToObject(string xml) { return xml; } public override bool Equals(object x, object y) { return ObjectUtils.Equals(x, y); } public override string ToXML(object value) { return (string) value; } } } |