类辅助函数替代

时间:2015-09-04 00:21:12

标签: sql .net vb.net

职位表 JobID(int,autonumber), 名称(varchar), Foreman(int) - 包含Employee表中的EmpID ...

员工表 EmpID(int,autonumber), FirstName(varchar), LastName(varchar), ...

使用VB.NET

我的Job类具有Jobs表中所有列的属性,以及从sql数据库加载它们并将它们保存到数据库的方法。

但是,当我实例化一个Job对象时,我希望它有一个只读的foreman name属性,但我不知道如何使用OOP正确地做到这一点。我目前依赖共享的帮助函数。似乎必须有更好的方法。

有人能指出我正确的方向吗?

2 个答案:

答案 0 :(得分:0)

我认为你可以这样做:

[NotMapped]
public virtual Employee ForemanDetail
{
    get
    {
        return Enumeration.FromValue<Employee>(Foreman);
    }
    private set {}
}

这不会设置Foreman名称,但可以让您根据需要访问详细信息。语法可能略有错误,但至少应该向您发送正确的方向。

答案 1 :(得分:0)

我最后对我的FWO类进行了子类化并在那里添加了附加属性。 此示例涉及当FWO表仅包含员工行ID值时,具有与字段工作订单(FWO)关联的工头名称属性。在我最初的问题中,基本上和工头的工作问题一样。

Imports System.Data.SqlClient

Public Class FWOWrk
    Inherits FWO

    Private mForemanName As String

    ReadOnly Property ForemanName() As String
        Get
            Return mForemanName
        End Get
    End Property

    Public Sub New(sConnStr As String, FWOID As Int32)
        ' Constructor

        ' Call FWO.New
        MyBase.New()
        MyBase.ConnectString = sConnStr

        MyBase.GetByID(FWOID)

        ' Get employee info for foreman.
        GetForeman()

    End Sub

    Private Sub GetForeman()
        ' Get the foreman and load the mForeman name property.
        Dim oEmp As New Emp
        oEmp.ConnectString = MyBase.ConnectString
        oEmp.GetByPKey(MyBase.Co, MyBase.Foreman)
        mForemanName = oEmp.FirstName & " " & oEmp.LastName

        oEmp = Nothing

    End Sub

End Class