实体框架:在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
两个变量normalDate
和nullableDate
的内容是相同的,但它们不是: 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