1

我只是在学习使用 VB.NET 和 VS2008 中的部分类。具体来说,我正在尝试扩展由 SqlMetal 自动创建的 LINQ to SQL 类。

自动生成的类如下所示:

Partial Public Class DataContext
    Inherits System.Data.Linq.DataContext

 ...


<Table(Name:="dbo.Concessions")>  _
Partial Public Class Concession

 ...

     <Column(Storage:="_Country", DbType:="Char(2)")>  _
   Public Property Country() As String
          ...
    End Property

 ...

End Class

在一个单独的文件中,这就是我想要做的:

Partial Public Class DataContext

    Partial Public Class Concession

        Public Function Foo() as String
            Return DoSomeProcessing(Me.Country)
        End Function

    End Class

End Class

Me.Country...但我在' '和消息下得到蓝色锯齿'Country' is not a member of 'DataContext.Concession'。分部类的两半都在同一个命名空间中。

那么如何从我的部分类的一半访问自动生成的部分类的一半的属性?

4

2 回答 2

3

除非 VB.NET 在其 LINQ to SQL 文件中从 C# 生成不同的东西,否则 DB 表的类不在 DataContext 类中,就在它旁边。

所以当部分类的另一半是真正的 MyNamespace.Concession 时,你有类MyNamespace.DataContext.Concession

于 2008-10-25T22:35:55.627 回答
0

(这与 VB.NET 相关 - 可能与 C# 项目不同)

我通过配置 Linq-to-SQL 模型属性将我的实体放在它们自己的命名空间中。

例如 MyCo.MyProj.Business.Entities

然后我也在那里添加非 Linq 业务实体,所以它们都在同一个命名空间中。

但是,当尝试进行上述部分类添加时,我发现部分类(即您生成的类,而不是自动生成的 LINQ 类)必须与 Linq-to-SQL 模型在同一个项目中。否则,在类视图和对象查看器中,您会看到两个单独的类 - 看似在同一个命名空间中,但实际上并非如此。不确定这是一个错误还是我做错了什么。

但是,无论如何,将部分类文件放在与模型相同的项目中。

于 2011-03-14T04:34:48.193 回答