Clique aqui para ler todos os artigos desta edição
Novidades do ADO.NET 2.0
Serialização Binária, SqlConnectionStringBuilder, melhorias no DataView e Batch Updates
John Papa
Este artigo discute |
Este artigo usa as seguintes tecnologias |
· Serialização de DataSets e DataTables em formato binário como alternativa a XML; · Como construir strings de conexão dinamicamente; · Melhorias no DataView; · Atualizações em Lote no DataAdapter (Batch Updates). |
· ADO.NET 2.0, Visual Studio 2005. |
Chapéu: ADO.NET |
|
Várias melhorias significativas foram introduzidas no ADO.NET 2.0, incluindo otimização de desempenho, flexibilidade e adição de novos recursos. No meu artigo da edição 24 (“DataSet e DataTable em ADO.NET
Serialização binária
O ADO.NET 1.x provê formas para serializar um DataSet. A má notícia é que o formato XML usado para DataSets pode causar problemas de desempenho quando um grande DataSet for serializado e transmitido via rede. O ADO.NET 2.0 pode serializar um DataSet ou um DataTable em formato binário puro, resultando em menor consumo de memória e largura da banda de rede.
Vejamos como implementar serialização binária em um DataTable. A propriedade RemotingFormat do DataTable foi introduzida no ADO.NET 2.0 que pode ser usada para fixar o formato da serialização. A propriedade RemotingFormat espera por um dos dois valores de enumeração do SerializationFormat: SerializationFormat.Xml ou SerializationFormat.Binary. Uma vez definido o RemotingFormat, podemos criar uma instância da classe BinaryFormatter para serializar o DataTable. O exemplo da Listagem 1 carrega uma lista de clientes em um DataTable e o serializa no formato binário.
Listagem 1. Serialização binária de um DataTable
string cnStr = @"server=.;database=northwind;integrated security=true;";
using (SqlConnection cn = new SqlConnection(cnStr))
{
string sql = "SELECT o.OrderID, o.CustomerID, o.OrderDate, " +
"od.ProductID, p.ProductName, od.UnitPrice, " +
"od.Quantity FROM Orders o " +
"INNER JOIN [Order Details] od " +
"ON o.OrderID = od.OrderID INNER JOIN Products p ON " +
" p.ProductID = od.ProductID ";
SqlCommand cmd = new SqlCommand(sql, cn);
SqlDataAdapter adpt = new SqlDataAdapter(cmd);
DataTable dtCustomers = new DataTable("Customers");
adpt.Fill(dtCustomers);
...