2012-12-06 41 views
1

我有我的SQL Server 2008 R2數據庫這一行,但我不明白:日期是01/01/0001,而不是日期在數據庫中?

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; } 
} 

有人能幫助我,好嗎?

+1

那麼這表明它沒有被正確取出。不幸的是,您並未向我們提供任何關於您如何訪問它的信息。沒有更多信息,我們目前無法幫助您。請閱讀http://tinyurl.com/so-list –

+0

它是DB或varchar中的日期時間字段? – leppie

+0

你是如何獲取'newsItem.CommentDate',目前它顯示'DateTime.MinValue' – Habib

回答

3

這就是問題所在:

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

你不在這裏填充CommentDate,因此它有足夠的DateTime.MinValue默認值。

當然,我們現在還不能告訴你的存儲過程是否在所有返回值的,但假設是這樣,你應該大概從DataRow獲取它,並把它在你的模型...

之前你只是修復代碼,你應該退後一步,想想你的診斷過程。你嘗試過調試嗎?添加日誌?你應該已經能夠看到非常快,你沒有在模型中CommentDate,然後試圖找出爲什麼你沒有一個CommentDate,這應該促使你回到代碼創建實例的模型。如果你能改善你的診斷過程,你可以通過不必多問許多問題來顯着加快你的未來發展。

+0

@charlie_cat:那麼你確認,你現在已經*實際上得到的模型日期*?你進行了哪些調試? –

+0

對不起,我看到了問題,因爲你所指出的,即時通訊試圖快速解決它,謝謝 –

+0

我的問題是在我的倉庫VAR日期時間= Convert.ToDateTime(行[「DateAndTime」]); news.Add(新DataModels.News.NewsPostsDataModel {NewsPostId = ID,NewsComment =消息,CommentDate =日期時間}); –

相關問題