Загрузка файла MVC: объект должен реализовывать iConvertible - PullRequest
0 голосов
/ 01 мая 2018

Я разрешаю пользователям загружать файл и давать ему имя. Прямо сейчас я просто добавляю строку в базу данных со следующим: Username, DataSetID (GUID), DataSetName, TimeStamp.

Я получаю ошибку

«Объект должен реализовывать IConvertible.»

Guid unique = Guid.NewGuid();
var current = DateTime.Now;
string sql = "INSERT INTO datasets (userid, datasetid, datasetname, timestamp) VALUES (@userid, @datasetid, @datasetname, @timestamp);";

using (SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString))
{
    using (SqlCommand command = new SqlCommand(sql, con))
    {
        command.Parameters.Add("@userid", SqlDbType.Text);
        command.Parameters["@userid"].Value = System.Web.HttpContext.Current.User.Identity.GetUserId();
        command.Parameters.Add("@datasetid", SqlDbType.Text);
        command.Parameters["@datasetid"].Value = unique;
        command.Parameters.Add("@datasetname", SqlDbType.Text);
        command.Parameters["@datasetname"].Value = datasetname.ToString();
        command.Parameters.Add("@timestamp", SqlDbType.DateTime);
        command.Parameters["@timestamp"].Value = current;


        con.Open();
        command.ExecuteNonQuery();
        con.Close();
    }
}

1 Ответ

0 голосов
/ 01 мая 2018

Вы не можете неявно преобразовать Guid (unique в вашем коде) в строку.

Делаем это явно:

command.Parameters["@datasetid"].Value = unique.ToString();

должно это исправить.

См. https://msdn.microsoft.com/en-us/library/system.guid(v=vs.110).aspx для документации. Как видите, Guid не реализует интерфейс IConvertible, который бы позволял неявное преобразование.

...