私はこのコードを実行時にSystem.InvalidCastException
を取得しています:InvalidCastExceptionが、ASP.NETでSqlDataReaderのからフェッチする列挙値MVC
inf.Country = (Country)(int)rdr["Country"];
Modelクラス:
public class BasicInfo
{
.....
public Gender Gender { get; set; }
public Country Country { get; set; }
}
public enum Gender
{
Male,
Female
}
public enum Country
{
Australia,
Bangladesh,
England,
France,
Usa
}
DbConnect
クラス:メソッドが返しますエンティティのリストが表示され、コントローラのビューを通過します。
usp_GetAllStudentData
は、レコードのリストを返すストアドプロシージャです。
public List<BasicInfo> SelectStudent()
{
ConnectionString();//Contain Connection string
List<BasicInfo> entities = new List<BasicInfo>();
SqlCommand cmd = new SqlCommand("usp_GetAllStudentData", conn);
cmd.CommandType = CommandType.StoredProcedure;
conn.Open();
SqlDataReader rdr = cmd.ExecuteReader();
while(rdr.Read())
{
BasicInfo inf = new BasicInfo();
inf.FirstName = (string)rdr["FirstName"];
.....//other required value are assigned to class members.
//inf.Gender = (Gender)(int)rdr["Gender"];
inf.Country = (Country)(int)rdr["Country"]; // Getting run time exception here
entities.Add(inf);
}
return entities;
}
How the data is stored in the database
君たちは私が列挙値をキャストするための最良の方法は何か知っていることはできますか?
この問題を解決する別の方法がある場合はお知らせください。
を試してみてください。 – Beginners
データベーステーブルの「国」列はどのように定義されていますか?私はそのデータ型がIntであると仮定します。 – Steve
いいえ、そのvarchar型です。 – Beginners