これはだまされている可能性があることは理解していますが、答えを探すのに何時間も費やしましたが、見つけられないようです.
現在、コンサート データを取得する Web API を作成しています。
開始日と終了日をどちらもdatetime2
タイプとして保持する SQL Server テーブルがあります。この形式で日付を挿入しましたが、データベースを表示するときに問題は発生しません。
2015-10-08T20:00:00.0000000+01:00
私のモデル:
public class Concert
{
public int Id { get; set; }
public string Name { get; set; }
public int LocationId { get; set; }
[Column(TypeName = "DateTime2")]
public DateTime Start { get; set; }
[Column(TypeName = "DateTime2")]
public DateTime End { get; set; }
public string Description { get; set; }
public string Url { get; set; }
}
そして、データベース データを表示するクラスのメソッド:
public List<Concert> getAll()
{
List<Concert> concerts = new List<Concert>();
SqlConnection connection = CasWebAPIdb.getConnection();
String selectAll = "SELECT ConcertId, ConcertName, ConcertLocationId FROM dbo.Concerts";
SqlCommand selectCommand = new SqlCommand(selectAll, connection);
try
{
connection.Open();
SqlDataReader reader = selectCommand.ExecuteReader();
var isoDateTimeFormat = CultureInfo.InvariantCulture.DateTimeFormat;
while (reader.Read())
{
//Debug.WriteLine("lol: " + reader["ConcertEnd"].GetType());
Concert concert = new Concert();
concert.Id = (int)reader["ConcertId"];
concert.Name = reader["ConcertName"].ToString();
concert.LocationId = (int)reader["ConcertLocationId"];
concert.Start = (DateTime)reader["ConcertStart"];
concert.End = (DateTime)reader["ConcertEnd"];
concerts.Add(concert);
}
}
catch (SqlException ex)
{
throw ex;
}
finally
{
connection.Close();
}
return concerts;
}
}
デバッグ時に次のエラーが発生します。
タイプ 'System.IndexOutOfRangeException' の例外が System.Data.dll で発生しましたが、ユーザー コードで処理されませんでした
私は多くのことを試し、多くの例とコードに従いましたが、これを適切に変換できないようです。誰かアイデアがありますか?
解決
「concertStart」と「concertEnd」をクエリに追加するのを忘れていました。問題は解決しました、ありがとう!