From: Michael D. <mik...@us...> - 2004-04-14 14:41:05
|
Update of /cvsroot/nhibernate/nhibernate/src/NHibernate/Type In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv16544/NHibernate/Type Modified Files: Int32Type.cs TypeFactory.cs Added Files: GuidType.cs Log Message: Added a Guid Type. Testing is on local copy - some Driver's don't support guids and I added it to BasicClass for local testing. This will make the test in BasicTypes look like they are failing. The MockReader doesn't support GetGuid yet either - so that test is going to be ignored. Index: Int32Type.cs =================================================================== RCS file: /cvsroot/nhibernate/nhibernate/src/NHibernate/Type/Int32Type.cs,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** Int32Type.cs 10 Feb 2004 18:41:42 -0000 1.1 --- Int32Type.cs 14 Apr 2004 14:40:51 -0000 1.2 *************** *** 2,6 **** using System.Data; - //using NHibernate.Engine; using NHibernate.SqlTypes; --- 2,5 ---- Index: TypeFactory.cs =================================================================== RCS file: /cvsroot/nhibernate/nhibernate/src/NHibernate/Type/TypeFactory.cs,v retrieving revision 1.24 retrieving revision 1.25 diff -C2 -d -r1.24 -r1.25 *** TypeFactory.cs 9 Apr 2004 12:37:56 -0000 1.24 --- TypeFactory.cs 14 Apr 2004 14:40:51 -0000 1.25 *************** *** 94,97 **** --- 94,98 ---- TypeFactory.GetDecimalType(); TypeFactory.GetDoubleType(); + TypeFactory.GetGuidType(); TypeFactory.GetInt16Type(); TypeFactory.GetInt32Type(); *************** *** 620,623 **** --- 621,643 ---- /// </summary> /// <returns></returns> + public static NullableType GetGuidType() + { + + string key = typeof(GuidType).FullName; + NullableType returnType = (NullableType)typeByTypeOfName[key]; + if(returnType==null) + { + returnType = new GuidType(SqlTypeFactory.GetGuid()); + AddToTypeOfName(key, returnType); + } + + return returnType; + + } + + /// <summary> + /// + /// </summary> + /// <returns></returns> public static NullableType GetInt16Type() { --- NEW FILE: GuidType.cs --- using System; using System.Data; using NHibernate.SqlTypes; namespace NHibernate.Type { public class GuidType : PrimitiveType, IDiscriminatorType { internal GuidType(GuidSqlType sqlType) : base(sqlType) { } public override object Get(IDataReader rs, int index) { return rs.GetGuid(index); } public override object Get(IDataReader rs, string name) { return Get(rs, rs.GetOrdinal(name)); } public override System.Type PrimitiveClass { get { return typeof(System.Guid); } } public override System.Type ReturnedClass { get { return typeof(System.Guid); } } public override void Set(IDbCommand cmd, object value, int index) { IDataParameter parm = cmd.Parameters[index] as IDataParameter; parm.Value = value; } public override string Name { get { return "Guid"; } } public override string ObjectToSQLString(object value) { return value.ToString(); } public object StringToObject(string xml) { return new Guid(xml); } } } |