有时,当我使用LINQ to SQL时,我收到一条消息错误: “无法将类型转换为可为空的值。”
有人知道原因吗?
谢谢。
答案 0 :(得分:1)
sql中的列不可为空,并且您传递的值可以为null。
例如通过
DateTime? createdon
到表中需要在日期时间创建
。答案 1 :(得分:1)
考虑以下示例,表/字段:
Customer.CustomerId (int)
Customer.Code (int)
考虑另一个表/字段:
Sale.CustomerId (nullable<int>)
Sale.CustomerId字段引用了Customer.CustomerId字段。但是Sale.CustomerId字段可以为空。如果您的LINQ显示如下:Sale.Customer.Code,则Code字段可以生成可为空的整数值,并引发错误,因为在Sale表中Customer是可选的。客户匿名类型需要一个整数值,但此刻该值可以为空。为了安全起见,将字段Sale.Customer.Code键入为int?。 (可为空的整数)。更改:
Code = Sale.Customer.Code
到(int?)
Code = (int?)Sale.Customer.Code
然后重试!
答案 2 :(得分:0)
有时您想将一个Nullable值(例如int? Or Nullable<int>
等)分配为非null值(例如int)。
为了避免这种异常,您必须在将对象赋值之前将其强制转换为Nullable值,例如以下代码:
int a = 1; //a is int and not null value
int? b = 2; //b is nullable int
a = b; //with this line code you will see compile error
a = b.value; //this is the correct syntax