LINQ to SQL 的常見異常及解決辦法

2022-07-20 07:42:09 字數 1831 閱讀 2696

ø

簡介 本文主要介紹linq to sql 中常見的異常,以及對應的解決辦法。包括以下內容:

1.左連線情況下,右表非空型別字段可能丟擲異常 1.

左連線情況下,右表非空型別字段可能丟擲異常

說明:userinfo.customerid

關聯 customer.id,為多對一的關係。但是 userinfo.customerid 字段可能為 null, 所以執行以下語句將報錯:

1)linq

語句 var

datas1 = (

from

t1 in

datacontext.userinfoes

join

t2 in

datacontext.customers

ont1.customerid

equals

t2.id

into

t12

from

t3 in

t12.defaultifempty()

where

t1.id > 5000

select

new

).take(3).toarray();

2)生成sql

select

[limit1]

.[c1]

as [c1],

[limit1]

.[id]

as [id],

[limit1]

.[customerid]

as [customerid],

[limit1]

.[id1]

as [id1]

from

( select

top (3)

[extent1]

.[id]

as [id],

[extent1]

.[customerid]

as [customerid],

1 as

[c1],

[extent2]

.[id]

as [id1]

from

[dbo]

.[userinfo]

as [extent1]

left

outer

join

[dbo]

.[customer]

as [extent2]

on [extent1]

.[customerid]

= [extent2]

.[id]

where

[extent1]

.[id]

>

5000 )

as [limit1]

3)執行結果

4)將丟擲異常

system.invalidoperationexception:

到值型別「system.int64」的強制轉換失敗,因為具體化值為null。結果型別的泛型引數或查詢必須使用可以為null 的型別。」

5)解決辦法:

1.分析:其實很簡單,因為是左連線,左表記錄不能與右表連線時,右表字段將以 null 返回。但是程式中是以long 型別接收,不能為null 值,所以就報錯了。

2.那我們是不是將非空型別(long)改為可空型別(

nullable)

就可以了?沒錯,我們只需要改寫一行**即可:

customerid2 = (

long

?)t3.id

常見socket讀寫異常及錯誤

eagain的錯誤 一般是對非阻塞埠讀寫產生的錯誤。1 傳送產生 傳送緩衝區剩餘空間小於傳送包大小。可以通過修改 tcp sendspace,使之大於send中的size引數 no p o tcp sendspace 65536 2 接收產生 errno 為11,算是異常,等待再次觸發讀取。eint...

python 常見異常及try語句

1 assertionerror 斷言語句 assert 失敗 2 attributerrrror 嘗試訪問位置的物件屬性 3 indexerror 索引超出系列的範圍 4 keyerror 字典中查詢乙個不存在的關鍵字 注意 使用.get方法即使關鍵字不存在也不會報錯即程式不會垮掉 5 namee...

異常 常見的異常

在程式設計中異常處理會被頻繁的使用,所以有必要知道一些常見的異常。nullpointexception 空指標異常,屬於執行時異常。簡單來說就是呼叫了未經初始化的物件或者不存在的物件,或者是訪問或修改null物件的屬性或方法。classnotfoundexception 找不到類異常。出現這種情況一...