|
From: <sv...@de...> - 2005-05-31 20:15:14
|
Author: svera
Date: 2005-05-31 16:15:06 -0400 (Tue, 31 May 2005)
New Revision: 1222
Modified:
humano2/trunk/core/db/absCrud.cs
Log:
* Fix Bug #116
Modified: humano2/trunk/core/db/absCrud.cs
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- humano2/trunk/core/db/absCrud.cs 2005-05-31 20:12:42 UTC (rev 1221)
+++ humano2/trunk/core/db/absCrud.cs 2005-05-31 20:15:06 UTC (rev 1222)
@@ -18,11 +18,12 @@
=20
namespace Humano2.Core.Db {
=20
- abstract public class absCrud {
+ abstract public class absCrud=20
+ {
=20
#region Funciones Publicas, (Funcionalidad propia del Crud)
=09
- // ** CRUD ** //
+ // ** CRUD ** //
///<summary>Al momento de crear el driver, levanta la conexion a la ba=
se de datos.</summary>
public absCrud(Core c)
{
@@ -59,28 +60,28 @@
virtual public string AttributeTypeMapping(string name)
{
string res =3D "";
- if(attMap[name] =3D=3D null) //This is not a basic type
- {
- res =3D findSqlTypeForAttribute(attMap,name);
- }
- else
- {
- res =3D attMap[name]; =20
- }
- //Logger.Log("AttributeTypeMapping. name=3D " + name + " res=
=3D " + res, LogLevel.Trace);
- return res;
+ if(attMap[name] =3D=3D null) //This is not a basic type
+ {
+ res =3D findSqlTypeForAttribute(attMap,name);
+ }
+ else
+ {
+ res =3D attMap[name]; =20
+ }
+ //Logger.Log("AttributeTypeMapping. name=3D " + name + " res =3D " + =
res, LogLevel.Trace);
+ return res;
}
=09
- #endregion
+ #endregion
=20
- ///<summary>
- /// Finds the sql type of a non basic attribute (like textline, =
numeric, currency etc...)
- ///<param name=3D"attMap">the dictionnary with basic attributes =
/ sql type</param>
- ///<param name=3D"name">The name of the non basic attribute</par=
am>
- ///<returns>The type of non basic attribute. If this type is not=
found, an exception is
- /// raised (because every non basic type should derived from a b=
asic one)</returns>
- ///</summary>
- abstract protected string findSqlTypeForAttribute(StringDictiona=
ry attMap, string name);
+ ///<summary>
+ /// Finds the sql type of a non basic attribute (like textline, numeri=
c, currency etc...)
+ ///<param name=3D"attMap">the dictionnary with basic attributes / sql =
type</param>
+ ///<param name=3D"name">The name of the non basic attribute</param>
+ ///<returns>The type of non basic attribute. If this type is not found=
, an exception is
+ /// raised (because every non basic type should derived from a basic o=
ne)</returns>
+ ///</summary>
+ abstract protected string findSqlTypeForAttribute(StringDictionary att=
Map, string name);
=20
///<summary>Devuelve toda la estructura de una clase.</summary>
///<returns>Devuelve un DataSet con toda la estructura activa de una c=
lase.</returns>
@@ -187,7 +188,7 @@
return idEntities;
}
=20
- /******* UPDATEs *******/
+ /******* UPDATEs *******/
=20
///<summary>Modificar los datos de una instancia ya existente en el mo=
delo.</summary>
///<returns>La cantidad de columnas modificados.</returns>
@@ -233,24 +234,47 @@
}
=09
=09
- /****** DELETEs******/
+ /****** DELETEs******/
=09
///<summary>Elimina un objeto del systema</summary>
///<remarks>Este metodo solo marca el objeto como borrado pero no lo b=
orra fisicamente de la base de datos.</remarks>
- ///<returns>La cantidad de elementos borraros.</returns>
+ ///<returns>La cantidad de instancias borraros.</returns>
///<param name=3D"idEntity">El ID del objeto para eliminar</param>
///<exception cref=3D"Humano2.Core.Db.NoExistException">Cuando un ID n=
o existe en el sistema.</exception>
///<exception cref=3D"Humano2.Core.Db.SystemDataImmutableException">Cu=
ando un ID es parte del modelo base y no puede ser eliminado.</exception>
virtual public int Delete(int idEntity)
{
DataSet structure =3D ReadStructure(idEntity);
+
+ if( (!isSolucionData( idEntity, structure )) && (activeDomain !=3D (i=
nt) MetaModelConsts.DomainsSystem) )
+ {
+ throw new SystemDataImmutableException( idEntity );
+ }
+
+ conn.BeginTransaction();
+ int c =3D 0;
+ if (isClass(structure))
+ {
+ c =3D deleteClassAttributes(structure);
+ }
+ doSqlMarkDelete( idEntity ); =09
=09
- if( (isSolucionData( idEntity, structure )) || (activeDomain =3D=3D (=
int) MetaModelConsts.DomainsSystem) )
+ conn.Commit();
+ return c+1;
+ }
+
+ ///<summary>Elimina una lista de atributos de una clase.</summary>
+ ///<remarks>Este metodo solo marca los objetos como borrados pero no l=
os borra fisicamente de la base de datos.</remarks>
+ ///<returns>La cantidad de elementos borraros.</returns>
+ ///<param name=3D"idEntities">Los Id_Entity's de los objetos para elim=
inar</param>
+ ///<exception cref=3D"Humano2.Core.Db.NoExistException">Cuando un ID n=
o existe en el sistema.</exception>
+ virtual public int deleteClassAttributes(DataSet structure)=20
+ {
+ foreach(DataRow row in structure.Tables["attribute"].Rows)
{
- doSqlMarkDelete( idEntity );
- return 1;
+ doSqlMarkDelete(Convert.ToInt32(row[0]));
}
- throw new SystemDataImmutableException( idEntity );
+ return structure.Tables["attribute"].Rows.Count;
}
=09
///<summary>Elimina una lista de objectos del systema.</summary>
|