1. 程式人生 > >實體、實體集及其運用

實體、實體集及其運用

sys val can har 賦值 center 過程 num red

一、實體

實體

在C#中的寫法

在C#中

寫法(1):

   public  class UserInfo
    {
        public int UserID { get; set; }
    }
  

寫法(2):

    public class UserinfoEntity
    {
        private string userid;              ’定義字段名
        public string ID                    ’定義屬性項
        {
            get{return userid;}             ’取值[Get……End Get,是可省的]
            set{userid = value;}            ’賦值[Set……End Set,是可省的]
	}
    }

總結,簡單比較。方法(一)與方法(二)等價,非常明顯。寫法(一)更簡便。

(二)、VB.NET中寫法為:

VB.NET中寫法:

Public Class UserEntity
Private _userID As String             ’定義字段名
    Public Property UserID() As String    ’定義屬性項
        Get                               ’取值[Get……End Get。是可省的]
            Return _userID
        End Get
        Set(value As String)              ’賦值[Set……End Set,是可省的]
            _userID = value
        End Set
End Property
End Class

說明:上面寫了列舉了一個名稱為UserEntity的實體,其包含一個屬性名為_userID的UserID屬性項。

在現實運用中,一般都會有多個項。僅僅需定義字段名和相應的屬性項(依據取值和賦值的須要)就可以。

將一個對象的屬性集封裝成實體,通過賦值、取值過程。實現一個對象屬性值的傳遞。

如一個學生(是一個對象)有學號studentID(20145113145)、姓名name(王五)、性別sex、(男)班級class(火箭班)、身份證號ID(110120199008122014)等屬性。

(三)、使用方法:

運用

C#、VB.NET中使用方法同樣。取值時直接 = UserEntity.UserID ;賦值時UserEntity.UserID = Value(Value為設定值)。

二、實體集

實體集

實體集,就是具有同樣屬性項的一類實體的集合。

實體與實體集的關系,就像一名學生與一個班級的關系。

在數據表中,一行。承載一個對象的一套信息(屬性集),即是一個實體。多行。則是一組對象的屬性集。

僅僅須要傳遞一個個體信息(表中的一行),用實體就能夠滿足,但假設要傳一個群體的信息(一張表中的多行信息),則考慮用實體集。

(一)實體集的表示有表格和泛型。

將表格轉化成實體集(vb.net)的方法為:

表示:

DataTable數據類型轉化為泛型(實體集)

Imports System.Collections.Generic          ‘引用泛型集合
Imports System.Reflection                   ‘引用反射,用它的PropertyInfo
 
’將實體組裝成實體集的方法
‘將‘DataTable類型’轉化為泛型‘實體集’(‘實體集合’)
Public Class genericCollection
Public Shared Function converToList(Of T As {New})(ByVal sqlDatatable As DataTable) As List(Of T)
 
        Dim myList As New List(Of T)  ‘實例化一個泛型集合
        Dim myType As Type  ‘定義一個類型名_變量
        myType = GetType(T) ‘用於放置類型
        Dim sqlDatarow As DataRow ‘查詢表的行集
        Dim tmpName As String = String.Empty  ‘定義一個暫時變量
        ‘遍歷DataTable的全部數據行
        For Each sqlDatarow In sqlDatatable.Rows
            Dim myT As New T   ‘實例化類型
            ‘定義一個屬性集合
            Dim propertys() As PropertyInfo
            propertys = myT.GetType().GetProperties()
            ‘定義一條屬性
            Dim pr As PropertyInfo
            ‘遍歷全部屬性
            For Each pr In propertys
                tmpName = pr.Name   ‘將屬性名賦給變量容器
                ‘檢查DataTable是否包括此列。(列名=屬性名)
                If (sqlDatatable.Columns.Contains(tmpName)) Then
                    ‘推斷是否可編輯
                    If (pr.CanWrite = False) Then
                        Continue For
                    End If
                    ‘依據屬性名獲取對象
                    Dim value As Object = sqlDatarow(tmpName)
                    ‘推斷對象內體是否為空
                    If (value.ToString <> DBNull.Value.ToString) Then
                        pr.SetValue(myT, value, Nothing) ‘利用反射設置屬性
                    End If
                End If
            Next
            myList.Add(myT) ‘加入類型集合
        Next
        Return myList ‘返回泛型集合
End Function
 
End Class

(二)、實體集能夠這樣用

能夠這樣用

在程序中對數據的查詢、驗證、使用是常有的事。對數據庫的訪問也是必定的。但數據的訪問是件耗時的事,尤其面對大數據,在多用戶進行操作與共享的時候。數據訪問要是能降低那是關乎效能的事。

實體集合myList as Liss(of T_Entity)

Dim k as Integer = 1                                    ‘定義並初始化為1
Dim resumecash As Double                                ‘定義變量
myList = select_bll.select(T_Entity)
If myList.Count > 0 Then                                ‘防止為空
     Do While k < myList.Count Or k = myList.Count
        Dim new_entity As Entity.MainEntity = myList.Item(k - 1)
        If new_entity.Style = "固定用戶" Then           ‘設置條件。指定當中“固定用戶”字段,選擇符合條件的記錄。

cardNum = cardNum + 1 ‘累加符合條件記錄數 fastenCash = fastenCash + carditem.Cash ‘固定用戶銷售金 End If resumecash = resumecash + new_en.Consumecash ‘累加消費金額 k = k + 1 Loop End If

說明:上述代碼能夠得到的信息有,映射到表中相當於,表的行數(實體數)、指定一實行的指定記錄、符合條件的字段數、任一字段的內容。

通過這樣的形式的信息挖掘,能夠降低多數據庫的負荷。在多用戶進行操作時能降低訪問次數。就降低了線程、減輕了排隊造成的擁堵。

實體、實體集及其運用