2012-06-25 45 views
0

我的SQL Server數據庫包含幾個視圖,它們基本上是某些表的過濾(WHERE)/有序(ORDER BY)版本,即無連接。使用帶視圖的LINQ to SQL需要轉換/轉換爲表

一個例子是我的下載表,其中有一個視圖,如DownloadsOnlineOnly例如

SELECT * FROM Downloads WHERE Live = 1 ORDER BY FolderName ASC; 

我可以拖放這些觀點在我的LINQ to SQL的DataContext,並使用LINQ查詢這些意見和檢索數據精...

但外鍵關係沒有被挑在我的DataContext,所以我已經失去了能力:我理解爲什麼發生這種情況,但我怎麼能解決這個

Dim dl as DownloadOnlineOnly = (From r in db.DownloadOnlineOnlies Select r).First 

Dim fol as Folder = dl.Folder ' Syntax error as there is no association between 

           ' DownloadOnlineOnly and Folder in my DataContext. 

  • 沒有在我的DataContext中手動添加關聯?
  • 我可以改變實體的類型就像改變DataContext上SP的返回類型嗎?
  • Can I 在DownloadOnlineOnly對象和Download對象之間強制轉換或轉換
  • 還是其他一些方法?

道歉,如果這是一個微不足道的問題,我是相對較新的LINQ。

P.S.我正在開發與SQL Server 2008 R2數據庫。

+0

由於問題似乎獨立於ASP.NET,因此刪除了「ASP.NET」標記。另請參閱「[堆棧溢出不允許標題中的標記](http://meta.stackexchange.com/a/130208)」。 –

+0

@JohnSaunders我正在使用什麼版本的SQL Server?你爲什麼從我的帖子中刪除有用的信息? –

+0

什麼有用的信息?據我所知,我刪除了與您的問題無關的「ASP.NET」標籤。如果您使用Windows窗體或控制檯應用程序,看起來您會得到完全相同的錯誤。 –

回答

1

你必須手動掛鉤。你無能爲力。感謝你不使用EF,因爲EF對視圖的支持更加糟糕。它假定任何非空字段都是複合主鍵的一部分。

+0

CType會工作嗎? –

+0

@ChrisCannon - 我很清楚。您必須手動連接關聯,沒有其他選擇。你不能投到其他類型,那裏有龍。 –

+0

必須有一種方法,當將視圖聯合到一個表時會發生什麼? –