insertar datos usando la columna datetime del método WriteToServer da una excepción

c# datetime sqlbulkcopy sql-server

Pregunta

Estoy tratando de insertar un DateTime en una columna cuyo tipo de datos es datetime. El valor se asigna usando DateTime.Now . Ahora, sé que no hay un problema con los tipos incorrectos en el código.

La excepción que recibo es:

The given value of type String from the data source cannot be converted
to type datetime of the specified target column.

Así es como estoy especificando mis columnas de datos:

DataTable HODetails = new DataTable();
HODetails.Columns.Add("MasterID", typeof(long));
HODetails.Columns.Add("ItemID", typeof(int));
HODetails.Columns.Add("SubCategoryID", typeof(int));
HODetails.Columns.Add("BatchNo", typeof(string));
HODetails.Columns.Add("ExpiryDate", typeof(DateTime));

Y aquí es cómo estoy configurando los datos:

HODetails.Rows[HODetails.Rows.Count - 1]["ItemID"] = Convert.ToInt32(lblItemId.Text);
HODetails.Rows[HODetails.Rows.Count - 1]["MasterID"] =HOReceipt_ID;
HODetails.Rows[HODetails.Rows.Count - 1]["SubCategoryID"] = SubCatID;
HODetails.Rows[HODetails.Rows.Count - 1]["BatchNo"] = Convert.ToString(txtBatchNo.Text == "" ? "" : txtBatchNo.Text);
HODetails.Rows[HODetails.Rows.Count - 1]["ExpiryDate"] = DateTime.Now;

Entonces, ¿por qué WriteToServer() piensa que un "valor de tipo String de la fuente de datos no se puede convertir al tipo datetime"?

Respuesta aceptada

Mi problema está resuelto, cambio mi método writeToServer

                if (DtWithTableName.Rows.Count > 0)
                {
                using (SqlBulkCopy s = new SqlBulkCopy(strConnection))
                {

                try
                {
                    s.DestinationTableName = "HOMaterialReceiptDetails";
                    s.ColumnMappings.Add("MasterID", "MasterID");
                    s.ColumnMappings.Add("ItemID", "ItemID");
                    s.ColumnMappings.Add("SubCategoryID", "SubCategoryID");
                    s.ColumnMappings.Add("ExpiryDate", "ExpiryDate");
                    s.ColumnMappings.Add("BrandName", "BrandName");
                    s.ColumnMappings.Add("Qty", "Qty");
                    s.ColumnMappings.Add("FreeQty", "FreeQty");
                    s.ColumnMappings.Add("ReturnQty", "ReturnQty");
                    s.ColumnMappings.Add("ReplacementQty", "ReplacementQty");
                    s.WriteToServer(DtWithTableName);
                }
                catch (Exception)
                {

                    IsInserted = false;
                }

            }
        }


Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow