1

私のsqlserver2008 r2データベースにこの行がありますが、わかりません。

2012-12-06 11:00:36.703 and is of type DATETIME

ビューに表示すると、次のようになります。

Mon, Jan 1, 0001 

ここに私のコード:

var allNews = ZincService.NewsService.GetNewsPostsForId(id);

List<Zinc.Web.Areas.News.ViewModels.Home.NewsPostsViewModel> newsItems = new List<NewsPostsViewModel>();

foreach (var newsItem in allNews)
{ 
  NewsPostsViewModel newsItemViewModel = new NewsPostsViewModel();
  newsItemViewModel.CommentDate = String.Format("{0:ddd, MMM d, yyyy}", newsItem.CommentDate);
}

public class NewsPostsViewModel
{
  public Entities.News.News MainNews { get; set; }
  public virtual string News { get; set; }
  public virtual int NewsId { get; set; }
  public virtual string CommentDate { get; set; }
}

  public List<DataModels.News.NewsPostsDataModel> GetNewsPostsForId(int id)
{
  using (SqlConnection conn = new SqlConnection(ZincModelContainer.CONNECTIONSTRING))
  {
    using (SqlCommand cmd = conn.CreateCommand())
    {
      conn.Open();
      cmd.CommandType = System.Data.CommandType.StoredProcedure;
      cmd.CommandText = "[News].[GetNewsPostsForId]";

      SqlParameter param = new SqlParameter("@Id", System.Data.SqlDbType.Int);
      param.Value = id;
      cmd.Parameters.Add(param);

      List<DataModels.News.NewsPostsDataModel> news = new List<DataModels.News.NewsPostsDataModel>();

      using (SqlDataAdapter adapter = new SqlDataAdapter(cmd))
      {
        DataTable dt = new DataTable();
        adapter.Fill(dt);

        foreach (DataRow row in dt.Rows)
        {
          string message = Convert.ToString(row["NewsDescription"]);
          news.Add(new DataModels.News.NewsPostsDataModel { NewsPostId = id ,Message = message});
        }
      }

      return news;
    }
  }
}

public class NewsPostsDataModel
{
  public virtual int NewsPostId { get; set; }
  public virtual string Message { get; set; }
  public virtual DateTime CommentDate { get; set; }
}

誰か助けてもらえますか?

4

1 に答える 1

3

これが問題です:

news.Add(new DataModels.News.NewsPostsDataModel { NewsPostId = id ,Message = message});

ここにはデータが入力されていないCommentDateため、デフォルト値はDateTime.MinValue。です。

もちろん、ストアドプロシージャが値を返すかどうかはわかりませんが、返されると仮定すると、おそらく、からそれをフェッチDataRowしてモデルに配置する必要があります...

コードを修正する前に、一歩下がって診断プロセスについて考える必要があります。これにデバッグしてみましたか?ロギングを追加しますか?CommentDateモデルにがないことをすぐに確認できたはずです。次に、がない理由CommentDateを突き止めようとしました。これにより、モデルのインスタンスを作成するコードに戻ることができます。診断プロセスを改善できれば、多くの質問をする必要がなくなるため、将来の開発を大幅にスピードアップできます。

于 2012-12-06T11:17:42.847 に答える