Como copiar uma linha de um DataTable para outro

Se voce está tentando copiar uma linha de um DataTable para outro e não está conseguindo aqui está a solução:

Quando você tenta executar esse código:

DataTable dt = new DataTable();
dt.Columns.Add("Coluna1");
dt.Columns.Add("Coluna2");

DataRow dr = dt.NewRow();
dr["Coluna1"] = "Valor 1";
dr["Coluna2"] = "Valor 2";

dt.Rows.Add(dr);
// Copia apenas o schema do DataTable
DataTable dt2 = dt.Clone();
// Aqui ocorre erro
dt2.Rows.Add(dr);

Esse codigo gera o erro: This row already belongs to this table.

Esse erro ocorre, pois você esta tentando colocar uma unica linha em dois DataTable, e um DataRow pode pertencer a apenas um DataTable.

Bom Agora vamos a Solução, no objeto DataTable existe um metodo chamado ImportRow(DataRow dr)  esse metodo cria um novo objeto DataRow, sem ligação com nenhum DataTable, e adicionar esse novo DataRow ao DataTable que chamou o metodo… Agora vamos a codificação da Solução

DataTable dt = new DataTable();
dt.Columns.Add("Coluna1");
dt.Columns.Add("Coluna2");

DataRow dr = dt.NewRow();
dr["Coluna1"] = "Valor 1";
dr["Coluna2"] = "Valor 2";

dt.Rows.Add(dr);
// Copia apenas o schema do DataTable
DataTable dt2 = dt.Clone();
// Agora funciona normalmente
dt2.ImportRow(dr);
Anúncios

Como Definir um Schema Padrão com NHibernate

Para conseguir definir um Schema padrão(isso é muito util para Oracle) nas configurações do Nhibernate, é muito simples, basta adicionar em seu arquivo de configuração (hibernate.cfg) uma nova propriedade igual a esta:

<propertyname="default_schema">NomeDoSchema</property>