无线照明系统开发过程说明(六)

 

 业务处理层LINQ

      对于业务处理层采用什么样的数据处理方式我一直很纠结。Sql 还是 LINQ呢,不过现在感觉各有各的优缺点。LINQ编程操作简单方便,简化众多内容;SQL相对处理就比较复杂;但是LINQ查询结果输出到报表的过程是几乎没办法完成的(RDLC除外),有时还需要将查询结果转换成SQL语句,然后到导入报表查询中,相当于写了两次查询。让人颇是头晕。在LINQ还没有被众多用户接受的情况下,还是采用SQL更好,还有一个速度上,SQL在大多数的情况下,要比LINQ快。

由于在设计过程中,感觉到系统不是多复杂,没有采用接口类来实现,从今天的来看是不正确的,为自己日后的管理带来诸多不便,所以在后来的数据处理方式上,更多是采用接口类来现的。后来接口类主要采用如下方式 :

Public Interface IFDataBase

'定义公共的接口类型

Function Add() As Boolean             '添加数据

Function Update() As Boolean          '更新数据

Function Delete() As Boolean          '删除数据

Function NameExist() As Boolean       '判断名称是否在

Function Find() As ArrayList          '查找

.......

End Interface

采用这种相同接口类,为统一管理和操作带来很大便利。我会再以后系统设计中加以说明的。

书归正传,以tbledinfo表建立一个DbtbLedInfo.dbml文件,如果所示。

然后组建处理灯信息的类,详细代码如下:

 

 

Imports System.Data.Linq

Imports System.Data.Linq.Mapping

Imports System.Text

 

Public Class ClsTbLedInfo

    Public Const cId As String = "序号"

    Public Const cLedTitle As String = "灯名称"           '标题

    Public Const cLedAddress As String = "模块地址"       '模块地址

    Public Const cLedChl As String = "通道数"             '模块通道数

    Public Const cLedDirection1 As String = "通道方向1"   '输出通道

    Public Const cLedDirection2 As String = "通道方向2"   '输出通道

    Public Const cLedDirection3 As String = "通道方向3"   '输出通道

    Public Const cLedDirection4 As String = "通道方向4"   '输出通道

    Public Const cLedEnabled As String = "启动状态"       '启动状态

    Public Const cMemos As String = "备注"                '备注

 

Dim MyDc As New DbtbLedInfoDataContext

‘返回全部数据

    Public Function ReadALl() As IEnumerable

        Return From MytbInfo In MyDc.tbLedInfo Select MytbInfo

    End Function

   ‘添加数据过程

    Public Function Add(ByVal pLedInfo As tbLedInfo) As Boolean

        Try

            Dim myIp As New tbLedInfo

            myIp.灯名称 = pLedInfo.灯名称

            myIp.模块地址 = pLedInfo.模块地址

            myIp.通道数 = pLedInfo.通道数

            myIp.通道方向1 = pLedInfo.通道方向1

            myIp.通道方向2 = pLedInfo.通道方向2

            myIp.通道方向3 = pLedInfo.通道方向3

            myIp.通道方向4 = pLedInfo.通道方向4

            myIp.启动状态 = pLedInfo.启动状态

            myIp.备注 = pLedInfo.备注

 

            MyDc.tbLedInfo.InsertOnSubmit(myIp)

            MyDc.SubmitChanges()

            Return True

        Catch ex As Exception

          msgBox(ex.ToString)

          Return False

        End Try

    End Function

 

 

    Public Function ModifyLedInfo(ByVal NewValue As tbLedInfo) As Boolean

        Try

 

            Dim MyQuery = From MyLed In MyDc.tbLedInfo Where MyLed.序号 = NewValue.序号 Select MyLed

            For Each c In MyQuery

                '  c.序号 = NewValue.序号

                c.灯名称 = NewValue.灯名称

                c.模块地址 = NewValue.模块地址

                c.通道数 = NewValue.通道数

                c.启动状态 = NewValue.启动状态

                c.通道方向1 = NewValue.通道方向1

                c.通道方向2 = NewValue.通道方向2

                c.通道方向3 = NewValue.通道方向3

                c.通道方向4 = NewValue.通道方向4

            Next

            MyDc.SubmitChanges()

            Return True

        Catch ex As Exception

            MsgBox(ex.ToString)

            Return False

        End Try

    End Function

 

    Public Function ExistBy(ByVal pLedTitle As String) As Boolean

        Try

            Dim MyQuery = From myLedIp In MyDc.tbLedInfo Select myLedIp Where myLedIp.灯名称 = pLedTitle

            If MyQuery.Count < 1 Then

                Return False

            Else

                Return True

            End If

 

        Catch ex As Exception

            MsgBox(ex.ToString)

            Return False

        End Try

 

    End Function

 

    Public Function Del(ByVal pLedTitle As String) As Boolean

 

        Try

            Dim MyQuery = From MyLedIp In MyDc.tbLedInfo Where MyLedIp.灯名称.Equals(pLedTitle) Select MyLedIp

            While (MyQuery.Count() > 0)

                MyDc.tbLedInfo.DeleteOnSubmit(MyQuery.First())

                MyDc.SubmitChanges()

            End While

            Return True

        Catch ex As Exception

            MsgBox(ex.ToString)

            Return False

        End Try

 

 

    End Function

 

    Public Function ReadLed() As ArrayList

        Try

            Dim MyQuery = From myLedIp In MyDc.tbLedInfo Select New With {.LedIp = myLedIp.灯名称} Distinct

            Dim MyLst As New ArrayList

            Dim P As New Collection

            'Console.WriteLine(MyQuery.Count.ToString)

            For Each c In MyQuery

                MyLst.Add(c.LedIp.Trim)

            Next

 

            Return MyLst

        Catch ex As Exception

            Return Nothing

                 End Try

    End Function

 

    '只有此处用到ledName

    Public Function Find(ByVal pLedTitle As String) As tbLedInfo

        Dim MyIp As New tbLedInfo

        Dim MyQuery = From myLedIp In MyDc.tbLedInfo Where myLedIp.灯名称.Equals(pLedTitle) Select myLedIp

        If MyQuery Is Nothing Then

            Return Nothing

        End If

        MyIp = MyQuery.FirstOrDefault

        Return MyIp

    End Function

 

    Public Function Find(ByVal pLedChl As Integer) As tbLedInfo

        Dim MyIp As New tbLedInfo

        Dim MyQuery = From myLedIp In MyDc.tbLedInfo Where myLedIp.模块地址 = pLedChl Select myLedIp

 

        If MyQuery Is Nothing Then

            Return Nothing

        End If

 

        MyIp = MyQuery.FirstOrDefault

        Return MyIp

 

    End Function

 

   Public Overloads Function FindLedName() As ArrayList

        Try

            Dim MyQuery = From myLedIp In MyDc.tbLedInfo Select myLedIp

            Dim MyLst As New ArrayList

            Dim P As New ArrayList

            For Each c In MyQuery

                P.Add(c.灯名称)

            Next

            Return P

        Catch ex As Exception

            Return Nothing

        End Try

    End Function

End Class


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值