2010-05-27 84 views
2

我有一個聲明瞭一個輸入參數什麼會導致linq to sql認爲參數是可空的?

@BatchNumber uniqueidentifier 

該字段在表中設置爲不允許nullables存儲過程。

當我在存儲過程中拖動,它將所有東西都鉤住它說參數是可空的。

我不明白爲什麼。這是正常的,它認爲參數是可空的?

+0

Duplicate:http://stackoverflow.com/questions/1183460/prevent-nullable-parameter-in-stored-procedure-with-linq – 2010-05-27 21:06:18

+1

因此,一個SQL類型可以始終爲空?我不喜歡那些人接受了答案,因爲你不應該改變自動生成的代碼中的東西,就好像它被重新創建然後被覆蓋一樣。 – chobo2 2010-05-27 21:09:00

+0

@ chobo2 - 不用在生成的代碼中更改它,您可以通過手動編輯它在.dbml文件中對其進行更改。 – 2010-05-27 21:11:53

回答

1

Sql中的所有變量都是可以爲空的。沒有辦法在sql中創建一個不可爲空的變量。

--yup, it's nullable. even starts initialized to null. 
DECLARE @MyVar int 

如果在設計器中更改參數類型,應該沒問題。

映射代碼可以具有非空值並將其交給數據庫,並且數據庫將其稱爲可以爲空並且沒有問題。這發生在您的查詢中每個不可爲空的情況下(例如Where子句中的不可爲空的整數ID)。

如果您無法在設計器中根據需要設置類型,請執行以下操作。爲該方法生成代碼,並將其從designer.cs文件複製到新的部分類定義中。手動設置方法的屬性中的類型。從設計器中刪除存儲的proc(此時,存儲的proc是手動添加的)。我們必須使用這種修復方式來允許OUTPUT參數起作用。

+0

啊,所以用它覆蓋這個可空類型來創建一個分類。這種方式即使DBML被重新創建也不會影響它。 – chobo2 2010-05-28 18:39:15

相關問題