2017-02-14 35 views
-1

我正在开发一个MVC应用程序。我在SQL表中有一个时间戳列。我有一个查询从数据库中检索所有数据。我正在使用LINQ。如何将sql时间戳分配给linq查询中的c#变量?

下面是我的查询:

obj = (from c in entityObject.NCT_ProcessAudit.AsNoTracking() 
     join proc in entityObject.NCT_Process_Settings on c.process_id equals proc.ID 
     select new returnObject 
     { 
      ID = c.ID, 
      process_id = c.process_id, 
      icon_id = c.icon_id, 
      dispaly_order = c.dispaly_order, 
      updated = c.updated, //c. updated timestamp in sql and updated is datetime as public Nullable<System.DateTime> updated { get; set; } 
      output = c.output 
     }).OrderByDescending(a => a.updated).ToList(); 

当我运行上面的查询,我得到以下错误

指定的强制转换从物化“System.Byte []”类型为可空“ System.DateTime'类型无效。

我可以在这里得到一些帮助。任何帮助,将不胜感激。谢谢。

+1

:-)取代。 returnObject类中更新的类型是什么? – A3006

+0

谢谢。 public Nullable updated {get;组; } –

+0

你真的不应该命名你的类'returnObject' –

回答

0

正如我在评论中写道的:
SQL timesatamp类型与其名字可能不一样。 它实际上只是一个通常用于行版本控制的运行编号。

就你的情况而言,通过字段的名称(updated),我想你想知道该行何时更新,因此,最好使用datetime作为字段的类型。

所有这一切的方式是写在MSDN:

那是一个数据库中公开自动生成的,唯一的二进制数字的数据类型。时间戳通常用作版本标记表行的机制。存储大小是8个字节。时间戳记数据类型只是一个递增数字,并不保留日期或时间。要记录日期或时间,请使用日期时间数据类型。

在最近版本的SqlServer这种类型被废弃和rowversion