2012-12-06 42 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 =日期时间}); –

相关问题