2009-10-21 68 views
0

我正在通過L2S運行一個存儲過程,它返回'指定的轉換無效'。存儲的proc在手動運行時返回數據,當我直接通過它時,一切都很好,直到它嘗試在「foreach(var row in result)」中創建行對象時爲止。LinqToSql給'指定的轉換無效'

var q = new db(); 
var result = q.GetNearbyLocations(latitude, longitude,searchDistance); 
foreach (var row in result) 
    { 
     var c = new Clinic() 
       { 
        Name = row.CLINIC_NAME.Trim(), 
        Address1 = row.DRADR1.Trim()... 

想法?

+0

Clinic.Name,Clinic.Address1,row.CLINIC_NAME和row.DRADR1的數據類型是什麼? – 2009-10-21 14:45:06

+0

我發現這個鏈接無價... http://msdn.microsoft.com/en-us/library/ms131092.aspx – Lazarus 2009-10-21 14:50:57

回答

1

這通常是由數據類型不匹配造成的,例如,如果存儲過程返回一個int並將其映射到一個字符串,或者存儲過程返回一個varchar(1)並映射到System.Char。

+0

sproc動態創建一個字符串變量並執行它。 Linq不喜歡這樣。爲了讓Linq正確讀取返回類型,我必須將其註釋掉並放入等效的sql語句中。不知何故,這在designer.cs中沒有發生,返回類型是int,而不是記錄集。我更改了sproc,重新導入並將spro改回到執行字符串變量。現在都很開心。 謝謝大家! – 2009-10-22 15:03:39

1

在執行foreach語句之前,您的sporc實際上不會被調用。因此,確保LINQ to SQL可以正確地將從sproc返回的數據映射到對象。

相關問題