.Net MVC で DB ストアド プロシージャをクエリするのはこれが初めてです。このプロシージャは、ゼロ行 (ユーザーがデータを入力したことがないことを意味します)、または日付を含む [When] という名前の 1 つの列を含む 1 つの行を返します。
ストアド プロシージャを照会するために次のメソッドを記述した DataHelper クラスがあります。
DataHelper クラス メソッド
public static DataSet Measurements_GetLastMeasurement(Guid UserID)
{
using (System.Data.SqlClient.SqlConnection conn = new System.Data.SqlClient.SqlConnection(CONN_STRING))
{
conn.Open();
System.Data.SqlClient.SqlCommand comm = new System.Data.SqlClient.SqlCommand();
comm.Connection = conn;
comm.CommandType = CommandType.StoredProcedure;
comm.CommandText = "dbo.Measurements_GetLastMeasurement";
comm.Parameters.AddWithValue("@UserID", UserID);
System.Data.SqlClient.SqlDataAdapter da = new System.Data.SqlClient.SqlDataAdapter(comm);
System.Data.DataSet ds = new DataSet();
da.Fill(ds);
return ds;
}
}
これは非常に簡単で、データをコントローラーに渡し、次に迷子になるビューに渡します。このクエリの結果が日付を返す場合、その日付を画面に出力します。null を返す場合は、null 値を保存して条件を実行します。これは、これを処理するためにコントローラーメソッドの一部を現在どのように設定しているかです。
コントローラーの方法
public ActionResult ChartView()
{
var authHelper = new stuff.for.auth();
var userSession = authHelper.GetUserSession();
// get users last data entry date
DataSet ds = Measurements_GetLastMeasurement(userSession.UserIDNative);
foreach (DataRow dr in ds.Tables[0].Rows)
{
DateTime lastEntryDate = dr["When"];
}
ViewData["LastEntryDate"] = lastEntryDate;
return PartialView();
}
次に、ビューから、ViewData["LastEntryDate"] を変数に設定し、それを html に表示するか、Javascript を使用して値が null かどうかを確認して確認することで、データにアクセスできるはずだと思います。説明やガイダンスをいただければ幸いです。