我正在尝试使用解决方案here在LINQ的DataContext中创建一个NEWID()函数,但是,当将部分类添加到我的DataContext.vb或单独的DataContextPartial.vb时,我得到了错误System.Data.Function is not available in this context because it is 'Friend'
。
我之前在访问数据类型时遇到过这种情况,并且很容易将其设置为Public,但我不确定function
的属性可能在哪里或如何更改它们。< / p>
我在上面的链接答案中从C#转换为VB.NET:
Partial Public Class CMSModelDataContext
<[Function](Name:="NEWID", IsComposable:=True)> _
Public Function Random() As Guid
Throw New NotImplementedException()
End Function
End Class
感谢您提前提供任何帮助。
答案 0 :(得分:1)
我不记得VB是否自动应用“属性”后缀。试试这个:
<FunctionAttribute(Name:="NEWID", IsComposable:=True)>
...并确保您拥有System.Data.Linq.Mapping
的导入。
编辑:看起来VB 应用了Attribute
后缀,因此我怀疑您缺少导入或引用。但是,明确指定FunctionAttribute
至少会帮助您通过删除System.Data.Function
的“误报”来验证这一点。
答案 1 :(得分:1)
我相信你应该
Import System.Data.Linq.Mapping
因为FunctionAttribute
驻留在那里。
你没有导入名称空间,编译器去了错误的方向查找类。尝试最好并看到您已导入System.Data
,编译器假定您要在System.Data.Function
程序集中使用Friend
这是一个内部(System.Data.dll
)类,因此出错。
可以想知道这个错误消息的确切目的是什么。如果无论如何都无法访问课程,为什么还要费心去讲呢?我认为原因是你可以引用自己的程序集忘记创建一些类型Public
。编译器警告你看到类但你只是不能使用它是有意义的。将相同的规则应用于所有引用(包括框架库)也是有意义的,尽管显然你不能修改其中的任何内容。
我认为FunctionAttribute
不是一个特别好的名称选择,因为它要求错误的命名空间导入和相关的混淆。