Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Как вы думаете...(справочные таблицы) / 1 сообщений из 1, страница 1 из 1
11.05.2006, 13:11
    #33720240
Vw
Vw
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как вы думаете...(справочные таблицы)
приложение(которое возможно будет работать и через инет) которое будет содержать множество справочных таблиц
изменение которых не требуется. вот для каждой из них я пишу такой класс:
т.е.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
Option Strict Off
Option Explicit On

Imports System.Data.SqlClient
Imports System.Data

Public Class RdrSprPost

    Public Shared Dt As New DataTable("RdrSprPost")
    Public Shared Sub CreateDt()
        Dim columnPost As DataColumn = New System.Data.DataColumn("Post", GetType(String), Nothing, System.Data.MappingType.Element)
        columnPost.AllowDBNull = False
        columnPost.MaxLength =  50 
        Dt.Columns.Add(columnPost)
        Dim columnPostPadeg As DataColumn = New System.Data.DataColumn("PostPadeg", GetType(String), Nothing, System.Data.MappingType.Element)
        columnPostPadeg.AllowDBNull = False
        columnPostPadeg.MaxLength =  50 
        Dt.Columns.Add(columnPostPadeg)

        Dim columnid As DataColumn = New System.Data.DataColumn("id", GetType(Integer), Nothing, System.Data.MappingType.Element)
        columnid.AllowDBNull = False
        columnid.ReadOnly = True
        columnid.Unique = True
        columnid.Caption = "id"
        Dt.Columns.Add(columnid)

        Dim pk( 0 ) As DataColumn
        pk( 0 ) = Dt.Columns("id")
        Dt.PrimaryKey = pk

        'Dt.Constraints.Add(New System.Data.UniqueConstraint("Constraint1", New System.Data.DataColumn() {columnid}, True))
        update()
    End Sub
    Public Shared ReadOnly Property RdrSprDt() As DataTable
        Get
            Return Dt
        End Get
    End Property
    Public Shared Sub update()
        Try
            Dt.Clear()
            If conn.State <> ConnectionState.Open Then conn.Open()
            Dim cmd As New SqlCommand("select Id,Post,PostPadeg From SprPosts", conn)
            Dim rdr As SqlDataReader = cmd.ExecuteReader()
            While rdr.Read
                Dim m As DataRow 'строка 
                m = Dt.NewRow
                m("id") = rdr.GetInt32( 0 )
                m("Post") = rdr.GetString( 1 )
                m("PostPadeg") = rdr.GetString( 2 )
                Dt.Rows.Add(m)
            End While
            rdr.Close()
            conn.Close()

            rdr = Nothing

        Catch ex As Exception
            MsgAddRow("Ошибка: " & ex.Message.ToString, MsgErr, Err.Number, "RdrSprSity.update")
        End Try

    End Sub
    Public Shared Sub Delete(ByVal arg As String)
        Try
            If DevExpress.XtraEditors.XtraMessageBox.Show("Действительно удалить ?", My.Application.Info.ProductName, MessageBoxButtons.OKCancel, MessageBoxIcon.Question) _
            = DialogResult.Cancel Then Return
            If conn.State <> ConnectionState.Open Then conn.Open()
            Dim cmd As New SqlCommand("delete From SprPosts where id=" & arg, conn)
            MsgBox(cmd.ExecuteNonQuery().ToString)
            MsgAddRow("Сведения о должности '" & arg & "' удалены!", MsgOk)
            update()
            conn.Close()
        Catch ex As Exception
            MsgAddRow("Ошибка: " & ex.Message.ToString, MsgErr, Err.Number, "RdrSprSity.delete")
        End Try

    End Sub

    Public Shared Function Lookup(ByVal arg As String, Optional ByVal mode As Boolean = False) As String

        Dim DR As DataRow = Dt.Rows.Find(arg)
        If mode = False Then Return DR.Item("Post")

        Return DR.Item("PostPadeg")
     
    End Function

End Class

те фактически держу таблицу в памяти.
Как вы думаете как это на быстродейсвии отразится.
Думаю что система сама будет кешировать таблицу на диск так ли это ?
Обусловлено это тем что в приложении может быть открыто одновременно множество форм которые будут использова одинакловые справочные наборы данных.
...
Рейтинг: 0 / 0
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Как вы думаете...(справочные таблицы) / 1 сообщений из 1, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]