Errore SqlBulkCopy dbnull.value

c# excel guid sqlbulkcopy

Domanda

Sto cercando di inserire le righe da un file excel in sql server 2000 usando bulkcopy. Nella tabella c'è un campo 'rowguid' e il suo valore predefinito è impostato su (newid ()) e non può eccedere i valori nulli. Anche RowGUID è impostato su "Sì".

Nel mio codice rimuovo la mappatura della colonna per rowguid. Ecco il mio codice.

if (dr.HasRows)
{
    using (SqlBulkCopy bulkCopy =
        new SqlBulkCopy(sqlConnectionString))
        {
           bulkCopy.DestinationTableName = "configtest";
           SqlBulkCopyColumnMapping value = new SqlBulkCopyColumnMapping("rowguid", "rowguid");
           bulkCopy.ColumnMappings.Remove(value);
           bulkCopy.WriteToServer(dr);
         }


 }

Ottengo la colonna 'rowguid non consente dbnull.value

la definizione per quel campo è: rowguid, uniqueidentifier, allow nulls unsticked.

Risposta popolare

È necessario rimuovere la mappatura a cui si fa riferimento. Quindi se hai già ColumnMappings devi farlo in questo modo:

var mapping = bulkCopy.ColumnMappings.Cast<SqlBulkCopyColumnMapping>()
            .Single(x => x.DestinationColumn == "rowguid"));

bulkCopy.ColumnMappings.Remove(mapping);


Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow