2011-02-25 45 views
2

我目前正試圖使用​​該解決方案here建立在我的LINQ的DataContext一NEWID()函數,但是,增加的部分類時我的DataContext.vb或單獨的DataContextPartial.vb,我得到錯誤System.Data.Function is not available in this context because it is 'Friend'System.Data.Function是不是在這種情況下用的,因爲它是「朋友」

我以前在訪問數據類型時遇到過這種情況,並且很容易將其設置爲Public,但我不確定function的屬性可能在哪裏以及如何更改它們。

我的代碼從C#轉換爲VB.NET中的鏈接上面的答案:

Partial Public Class CMSModelDataContext 
    <[Function](Name:="NEWID", IsComposable:=True)> _ 
    Public Function Random() As Guid 
     Throw New NotImplementedException() 
    End Function 
End Class 

感謝提前任何幫助。

回答

1

我不記得隨便VB是否自動應用「屬性」後綴。試試這個:

<FunctionAttribute(Name:="NEWID", IsComposable:=True)> 

...並確保您有一個導入System.Data.Linq.Mapping

編輯:它看起來像VB 應用Attribute後綴,所以我懷疑你失蹤導入或引用。但是,明確指定FunctionAttribute將至少幫助您通過刪除System.Data.Function的「誤報」來驗證此情況。

+0

VB.NET編譯器做到了,但是這會發現它改爲尋找'System.Data.Function'的事實。 – 2011-02-25 15:27:57

+0

@gaearon:我只是用幾乎完全一樣的情緒編輯我的答案:) – 2011-02-25 15:28:45

1

我相信你應該

Import System.Data.Linq.Mapping 

因爲FunctionAttribute駐留那裏。

你沒有導入命名空間和編譯器去尋找錯誤的方向類。嘗試它的最好的,看到你已經導入System.Data,編譯器假設你想使用System.Data.Function這是一個內部(Friend)類System.Data.dll組裝,因此錯誤。

人們可以不知道究竟什麼是此錯誤消息的目的。如果班級無法繼續訪問,爲什麼還要麻煩告訴呢?我認爲原因是你可以引用你自己的程序集,忘記做一些類型Public。這是有道理的編譯器警告你,它看到類,但你只是不能使用它。對所有引用應用相同的規則也是有意義的,包括框架庫,儘管顯然你不能修改那裏的任何東西。

我認爲FunctionAttribute不是一個特別好的名稱選擇,因爲它要求輸入錯誤的命名空間和相關的混淆。

相關問題