【问题标题】:Accessing members of the other half of a partial class访问部分类的另一半的成员
【发布时间】:2008-10-25 22:32:13
【问题描述】:

我只是在学习使用 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' 下看到蓝色锯齿。分部类的两半都在同一个命名空间中。

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

【问题讨论】:

    标签: vb.net visual-studio-2008 linq-to-sql partial-classes sqlmetal


    【解决方案1】:

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

    所以当部分类的另一半实际上是 MyNamespace.Concession

    时,您就有了类 MyNamespace.DataContext.Concession

    【讨论】:

      【解决方案2】:

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

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

      例如MyCo.MyProj.Business.Entities

      然后我也在其中添加非 Linq 业务实体,因此它们都在同一个命名空间中。

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-05-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-05-09
        • 2013-03-25
        • 2012-01-13
        相关资源
        最近更新 更多