实体框架:在vb.net处理中可以为空的DateTime toString(格式)

给定一个带DateTime字段生日表(不为空)的表元素,在实体框架4中,我可以这样做:

Dim mylist = (From el in Element Select el).ToList()
     .Select(function(el) new with { 
           .bday = el.birthday.toString("dd/MM/yy") 
           }

我现在需要将生日更改为可空,因此我更改了SQL Server中的表格,然后在Visual Studio中更新了我的ModelDB。 结果是该行:

           .bday = el.birthday.toString("dd/MM/yy") 

引发一个异常,如“从整数到字符串的无效转换”dd / mm / yy“)。将它”固定“的唯一方法是以这种方式更改该行:

           .bday = CDate(el.birthday).toString("dd/MM/yy") 

这是正确的方法吗? 现在我有一个可以为空的日期时间,如何处理el.birthday为空的情况?

谢谢!


如果你做一个小实验,你会完全理解正在发生的事情:

Dim normalDate As Date = Now
Dim nullableDate As Nullable(Of Date) = normalDate

Dim normalToText As String = normalDate.ToString("dd/MM/yy") 'Works perfectly

Dim nullableToText As String = nullableDate.ToString("dd/MM/yy") 'Error

两个变量normalDatenullableDate的内容是相同的,但它们不是: ToString("date in certain format")Date ToString("date in certain format")功能需要Date类型作为输入; 你发送的是日期类型的修改版本(不是太不同,但不一样)。 使用CDate你正在做的是将Date的修改版本转换为实际有效的Date类型,因此ToString()功能没有任何问题。

你做对了吗? 是的,至于CDate可以处理“空值”( CDate(Nothing)不会输出任何错误):您正在将给定变量调整为ToString()所期望的值。

注意:我已经检查了上述代码输出的确切错误,并且它有效地提供了“从字符串”dd / MM / yy“转换为键入”整数“无效。” 因此,当您打算将ToString(“date”)与Nullable Date一起使用时,您得到的错误是标准错误; 不是太具描述性的错误,这是真的。

链接地址: http://www.djcxy.com/p/42827.html

上一篇: Entity Framework: nullable DateTime toString(format) in vb.net handling

下一篇: Petapoco issue with nullable SQl Server smallint and int16 in vb.net