terça-feira, 1 de dezembro de 2009

ORM - Jade Open Framework.

Estou iniciando um projeto de construção de um ORM prático rápido e leve para atender aplicações de áreas de Business.

Eis os primeiros passos:


Dentro daqui alguns dias terei ele inteiro publicado.

#region Search
///
/// Search Object
///

///
public static List Search(string USP_Search, object baseObject)
{
List oList = new List();
Type tp = baseObject.GetType();
SqlConnection con = DataBaseController.GetConnection();
try
{
using (DataTable dataTableResult = new DataTable())
{
con.Open();
using (SqlDataAdapter adapter = new SqlDataAdapter(USP_Search + tp.Name, con))
{
adapter.SelectCommand.CommandType = CommandType.StoredProcedure;
foreach (IDataParameter parameter2 in DataBaseController.GetObjectParameters(USP_Search, baseObject))
{
adapter.SelectCommand.Parameters.Add(parameter2);
}
adapter.Fill(dataTableResult);
}
if (dataTableResult.Rows.Count > 0)
foreach (DataRow row in dataTableResult.Rows)
{
Object obj = Activator.CreateInstance(tp);

foreach (PropertyInfo info in tp.GetProperties())
{
object[] customAttributes = info.GetCustomAttributes(typeof(CmdSQLParamAttribute), false);
if (customAttributes.Length > 0)
{
foreach (object objcmdCustomAtributte in customAttributes)
{
if (objcmdCustomAtributte is CmdSQLParamAttribute)
{
IDataParameter parameter = ((CmdSQLParamAttribute)objcmdCustomAtributte).GetParameter();
info.SetValue(obj, row[parameter.ParameterName.Replace("@", string.Empty)], null);
}
}
}
}
oList.Add((T)obj);
}
}

}
finally
{
if (con.State != ConnectionState.Closed)
con.Close();
}

return oList;
}
#endregion
Postar um comentário