Você deve possuir instalado o Enterprise Library 4.1.
As namespaces necessárias são as seguintes:
using System;
using System.Collections.Generic;
using System.Text;
using Microsoft.Practices.EnterpriseLibrary.Data;
using Microsoft.Practices.EnterpriseLibrary.Data.Sql;
using System.Data.Common;
using System.Data.SqlClient;
using System.Data;
As proriedade e variaveis sao:
public static Database db { set; get; }
public static DbCommand dbCommand { set; get; }
private DbTransaction dbtransaction;
Metodo para fazer o CRUD é o SAVE, nele devemos passar o DATASET que foi alterado, um array com os parametros para Delete, uma Dictionary com os Campos e uma Dictionary com as Queries de Insert, Update e Delete. O resto é feito pelos outros metodos.
protected void Save(DataSet ds, String[] nameColDelete, Dictionary
{
string insertProc = getQueryXml("insert", Queries);
DbCommand insertCmd = db.GetSqlStringCommand(insertProc);
this.GenerateParamDs(Fields, insertCmd);
string updateProc = getQueryXml("update", Queries);
DbCommand updateCmd = db.GetSqlStringCommand(updateProc);
this.GenerateParamDs(Fields, updateCmd);
string deleteProc = getQueryXml("delete", Queries);
DbCommand deleteCmd = db.GetSqlStringCommand(deleteProc);
foreach (String _nameCollumn in nameColDelete)
{
db.AddInParameter(deleteCmd, _nameCollumn.ToString().Trim(), DbType.String, _nameCollumn.ToString().Trim(), DataRowVersion.Current);
}
DbConnection connection = db.CreateConnection();
connection.Open();
DbTransaction transaction = connection.BeginTransaction();
try
{
int rowsAffected = db.UpdateDataSet(ds, "Table", insertCmd, updateCmd, deleteCmd, transaction);
transaction.Commit();
}
catch (SqlException ex)
{
transaction.Rollback();
throw new FormatException(this.DbErrorMessage(ex.Number));
}
finally
{
if (connection != null && connection.State == ConnectionState.Open)
connection.Close();
}
}
Metodo serve para capturar as queries na dictionary
protected string getQueryXml(String Tipo, Dictionary
{
string returnString = "";
foreach (KeyValuePair
{
if (pair.Value.ToString().ToLower() == Tipo.ToString().ToLower())
returnString = pair.Key.ToString().Replace("\n","");
}
return returnString;
}
Metodo para Gerar os parametros passado pelo Dictionary
protected void GenerateParamDs(Dictionary
{
foreach (KeyValuePair
{
db.AddInParameter(dbCom, this.VerifyParamQuery("@" + Field.Key), this.getDbType(Field.Value), Field.Key, DataRowVersion.Current);
}
}
Seta o tipo de dados de banco de dados.
protected DbType getDbType(object dbType)
{
DbType locaDb = DbType.String;
string resultdbType = dbType.GetType().Name.ToString();
switch (resultdbType)
{
case "String":
locaDb = DbType.String;
break;
case "Int16":
locaDb = DbType.Int16;
break;
case "Int":
locaDb = DbType.Int16;
break;
case "Int32":
locaDb = DbType.Int16;
break;
case "int":
locaDb = DbType.Int16;
break;
case "DateTime":
locaDb = DbType.DateTime;
break;
}
return locaDb;
}
Por ser um material mais avançado não dei os pequenos detalhes sobre o código pois deve ser pre-requisito do leitor de tal artigo, mas caso haja duvidas postem no twitter:
twitter.com/devdicas
Autor: CArlos Bueno
Nenhum comentário:
Postar um comentário