Venildo você pode usar o dataadapter, ou então usar o sqlbulkcopy. Como não sei a estrutura do seu dataset e também não sei se você possui o adapter vou explicar o sqlbulkcopy.
Depois de ter preenchido o dataset, se você preencheu tudo certo com o relacionamento ele jogará certo o relacionamento no banco também.
SqlBulkCopy copy = new SqlBulkCopy(sua conexão do banco);
copy.DestinationTableName = "NotaFiscal"; // nome que está no seu banco
copy.WriteToServer(ds.NotaFiscal); // nome da tabela no seu dataset, se não for tipado: ds.Tables["NotaFiscal"]
copy.DestinationTableName = "ItensNotaFiscal"; // nome que está no seu banco
copy.WriteToServer(ds.ItensNostaFiscal); // nome da tabela no seu dataset, se não for tipado: ds.Tables["ItensNotaFiscal"]