1

私はこの機能を持つasp.net mvcアプリケーションを持っています:

public List<FichierModels> GetFichiersFromDirectoy(int _id_dir)
{
    List<FichierModels> l = new List<FichierModels>();
    Data.Connect();
    using (Data.connexion)
    {
        string queryString = @"select Id, Id_directory, Url, Upload_date, Last_download, Downloads_count, Taille, Expiration_date, Name from Fichier where Id_directory = @Id_directory ";
        SqlCommand command = new SqlCommand(queryString, Data.connexion);
        command.Parameters.AddWithValue("@Id_directory", _id_dir);
        try
        {
            SqlDataReader reader = command.ExecuteReader();
            do
            {

                while (reader.Read())
                {
                    FichierModels fichier = new FichierModels();
                    fichier.Id = reader.GetInt32(0); 
                        fichier.Id_directory = reader.GetInt32(1);
                        fichier.Url = reader.GetString(2); 
                        fichier.Upload_date = reader.GetDateTime(3); 
                        fichier.Last_download = reader.GetDateTime(4);
                        fichier.Downloads_count = reader.GetInt32(5); 
                        fichier.Taille = reader.GetFloat(6); 
                        fichier.Expiration_date = reader.GetDateTime(7);
                        fichier.Name = reader.GetString(8) ;
                    l.Add(fichier);

                }
            } while (reader.NextResult());

            return l;

        }
        catch { return null; }

    }
}

スキーマ 問題は、行のキャストの例外ですがfichier.Taille = reader.GetFloat(6);、属性tailleが float であり、クラスのキャストも例外です。しかし、Fichier常に間違ったキャストの例外です。 記録 なぜこれが起こるのですか?どうすれば修正できますか?

4

2 に答える 2

2

C# では、MSSQL float は double である必要があります。MSSQL の float の既定の精度は倍精度 (列がfloatとして定義されている場合、実際にはfloat(53) ) ですが、C# の float は常に単精度です。

于 2013-05-28T15:16:24.177 に答える
1

Sql サーバーの float 型は、C# の Double 型 http://msdn.microsoft.com/en-us/library/cc716729.aspx

于 2013-05-28T15:17:08.007 に答える