ROSTAM2
پنج شنبه 17 آبان 1403, 07:50 صبح
سلام
من یک جدول دارم: (Requierments)
156268
برای فراخوانی یک رکورد بر اساس ID یک تابع کلی دارم که می تونم با استفاده از اون رکورد هر جدول از دیتابیس Projects رو فراخوانی کنم:
Shared Function GetProjectsEntry(Of TableType, IDType)(ID As IDType) As TableType
Dim IDParam As New ObjectParameter("ID", ID)
Dim q As String =
String.Format("SELECT VALUE {0} FROM {0} WHERE {0}.ID = @ID", GetType(TableType).Name)
Return Projects.CreateQuery(Of TableType)(q, IDParam).FirstOrDefault
End Function
همه کدهای مرتبط با تابع:
Imports System.Data.Objects
Class ApplicationData
Friend Shared Projects As New ProjectsEntities
Shared Function GetProjectsEntry(Of TableType, IDType)(ID As IDType) As TableType
Dim IDParam As New ObjectParameter("ID", ID)
Dim q As String =
String.Format("SELECT VALUE {0} FROM {0} WHERE {0}.ID = @ID", GetType(TableType).Name)
Return Projects.CreateQuery(Of TableType)(q, IDParam).FirstOrDefault
End Function
...
End Class
برای نمایش اطلاعات یک رکورد از جدول Requierments از این دستورات استفاده می کنم (Console Application):
Imports System.Reflection
Protected Friend Shared Sub ShowRecord()
Console.ForegroundColor = ConsoleColor.White
Console.Write("{0} Type Requierment-ID to Show Information: ", vbTab)
Console.ForegroundColor = ConsoleColor.Gray
Value = Console.ReadLine
If Value.Length = 0 Then Exit Sub
Try
Dim Requierment As Requirements
Requierment = ApplicationData.GetProjectsEntry(Of Requirements, Integer)(Val(Value))
If Requierment Is Nothing Then
Console.ForegroundColor = ConsoleColor.Red
Console.WriteLine("{0} Requierment Not Found! (ID = {1})", vbTab, Value)
Exit Sub
End If
Console.WriteLine()
Console.ForegroundColor = ConsoleColor.DarkGreen
Console.Write("{0} Requierment ID: ", vbTab)
Console.ForegroundColor = ConsoleColor.Gray
Console.WriteLine("{0}", Value)
Console.ForegroundColor = ConsoleColor.White
Console.WriteLine("{0} {1}", vbTab, StrDup(30, "─"))
WriteRequiermentFields(Requierment)
Console.ForegroundColor = ConsoleColor.White
Console.WriteLine("{0} {1}", vbTab, StrDup(30, "─"))
Catch ex As Exception
Console.WriteLine(ex.Message)
End Try
End Sub
Protected Friend Shared Sub WriteRequiermentFields(
R As Requirements)
'Get Item─Name Max─Length....
Dim MaxLen As Integer = 0
Dim Value As Object
Dim PInfo As System.Reflection.PropertyInfo
For Each Field As String In SortedRequiermentFieldNames
If Field.ToLower = "id" Then Continue For
PInfo = GetType(Requirements).GetProperty(Field)
Value = PInfo.GetValue(R, New Object() {})
If IsDBNull(Value) = True Then Continue For
If String.IsNullOrEmpty(Value.ToString.Trim) = False Then
If Field.Length > MaxLen Then MaxLen = Field.Length
End If
Next
If MaxLen = 0 Then
Console.ForegroundColor = ConsoleColor.DarkCyan
Console.WriteLine("{0} Requierment has not any Information.", vbTab)
Exit Sub
End If
'──────────────── ──────
For Each Field As String In SortedRequiermentFieldNames
If Field.ToLower = "id" Then Continue For
PInfo = GetType(Requirements).GetProperty(Field)
Value = PInfo.GetValue(R, New Object() {})
If IsDBNull(Value) = True Then Continue For
If String.IsNullOrEmpty(Value.ToString.Trim) = False Then
WriteField(Field, Value, MaxLen + 1)
End If
Next
End Sub
Public Shared ReadOnly Property SortedRequiermentFieldNames() As String()
Get
Dim Expr As String() =
{"ID", "Title", "Explain", "ComputerName",
"Disk", "Path"}
Return Expr
End Get
End Property
Sub WriteField(Name As String, value As String, Optional MaximumLen As Integer = 9)
FillName(Name, MaximumLen)
Console.ForegroundColor = ConsoleColor.Green
Console.Write("{0} {1}: ", vbTab, Name)
Console.ForegroundColor = ConsoleColor.White
Console.WriteLine("{0}", value)
End Sub
من یک جدول دارم: (Requierments)
156268
برای فراخوانی یک رکورد بر اساس ID یک تابع کلی دارم که می تونم با استفاده از اون رکورد هر جدول از دیتابیس Projects رو فراخوانی کنم:
Shared Function GetProjectsEntry(Of TableType, IDType)(ID As IDType) As TableType
Dim IDParam As New ObjectParameter("ID", ID)
Dim q As String =
String.Format("SELECT VALUE {0} FROM {0} WHERE {0}.ID = @ID", GetType(TableType).Name)
Return Projects.CreateQuery(Of TableType)(q, IDParam).FirstOrDefault
End Function
همه کدهای مرتبط با تابع:
Imports System.Data.Objects
Class ApplicationData
Friend Shared Projects As New ProjectsEntities
Shared Function GetProjectsEntry(Of TableType, IDType)(ID As IDType) As TableType
Dim IDParam As New ObjectParameter("ID", ID)
Dim q As String =
String.Format("SELECT VALUE {0} FROM {0} WHERE {0}.ID = @ID", GetType(TableType).Name)
Return Projects.CreateQuery(Of TableType)(q, IDParam).FirstOrDefault
End Function
...
End Class
برای نمایش اطلاعات یک رکورد از جدول Requierments از این دستورات استفاده می کنم (Console Application):
Imports System.Reflection
Protected Friend Shared Sub ShowRecord()
Console.ForegroundColor = ConsoleColor.White
Console.Write("{0} Type Requierment-ID to Show Information: ", vbTab)
Console.ForegroundColor = ConsoleColor.Gray
Value = Console.ReadLine
If Value.Length = 0 Then Exit Sub
Try
Dim Requierment As Requirements
Requierment = ApplicationData.GetProjectsEntry(Of Requirements, Integer)(Val(Value))
If Requierment Is Nothing Then
Console.ForegroundColor = ConsoleColor.Red
Console.WriteLine("{0} Requierment Not Found! (ID = {1})", vbTab, Value)
Exit Sub
End If
Console.WriteLine()
Console.ForegroundColor = ConsoleColor.DarkGreen
Console.Write("{0} Requierment ID: ", vbTab)
Console.ForegroundColor = ConsoleColor.Gray
Console.WriteLine("{0}", Value)
Console.ForegroundColor = ConsoleColor.White
Console.WriteLine("{0} {1}", vbTab, StrDup(30, "─"))
WriteRequiermentFields(Requierment)
Console.ForegroundColor = ConsoleColor.White
Console.WriteLine("{0} {1}", vbTab, StrDup(30, "─"))
Catch ex As Exception
Console.WriteLine(ex.Message)
End Try
End Sub
Protected Friend Shared Sub WriteRequiermentFields(
R As Requirements)
'Get Item─Name Max─Length....
Dim MaxLen As Integer = 0
Dim Value As Object
Dim PInfo As System.Reflection.PropertyInfo
For Each Field As String In SortedRequiermentFieldNames
If Field.ToLower = "id" Then Continue For
PInfo = GetType(Requirements).GetProperty(Field)
Value = PInfo.GetValue(R, New Object() {})
If IsDBNull(Value) = True Then Continue For
If String.IsNullOrEmpty(Value.ToString.Trim) = False Then
If Field.Length > MaxLen Then MaxLen = Field.Length
End If
Next
If MaxLen = 0 Then
Console.ForegroundColor = ConsoleColor.DarkCyan
Console.WriteLine("{0} Requierment has not any Information.", vbTab)
Exit Sub
End If
'──────────────── ──────
For Each Field As String In SortedRequiermentFieldNames
If Field.ToLower = "id" Then Continue For
PInfo = GetType(Requirements).GetProperty(Field)
Value = PInfo.GetValue(R, New Object() {})
If IsDBNull(Value) = True Then Continue For
If String.IsNullOrEmpty(Value.ToString.Trim) = False Then
WriteField(Field, Value, MaxLen + 1)
End If
Next
End Sub
Public Shared ReadOnly Property SortedRequiermentFieldNames() As String()
Get
Dim Expr As String() =
{"ID", "Title", "Explain", "ComputerName",
"Disk", "Path"}
Return Expr
End Get
End Property
Sub WriteField(Name As String, value As String, Optional MaximumLen As Integer = 9)
FillName(Name, MaximumLen)
Console.ForegroundColor = ConsoleColor.Green
Console.Write("{0} {1}: ", vbTab, Name)
Console.ForegroundColor = ConsoleColor.White
Console.WriteLine("{0}", value)
End Sub