У меня 2 модели, Project
и Client
. В рамках модели данных они объединяются в общем поле, называемом ClientID
- проект имеет уникальный идентификатор ProjectID
и присоединяется к первичному ключу таблицы клиента (Client ID
) для получения указанного c уровня клиента информация для каждого проекта.
В моей MainData
viewmodel я инициализирую IEnumerable модели Project (которая используется в представлении) и хочу присоединить ее к модели Client
, чтобы получить поле под Client
называется ReviewOffice
. Когда я пытаюсь определить пользовательское свойство в Project
(называемое Office
), оно оказывает серьезное влияние на производительность из-за циклического прохождения каждого элемента в моем ProjectList
объекте.
Есть ли еще эффективный способ получения свойства ReviewOffice
в Client
?
Project.vb
Partial Public Class Project
<DatabaseGenerated(DatabaseGeneratedOption.Identity)>
Public Property ProjectID As Integer
Public Property ClientID As Integer
<NotMapped>
Public Property Office As String
End Class
Client.vb
Partial Public Class Client
Public Property ClientID As Integer
Public Property ReviewOffice As String
End Class
MainData.vb (ViewModel)
Public Property ProjectList As IEnumerable(Of Project)
Using db As New DatabaseContext
ProjectList = (From p In db.Projects Select p)
If Not IsNothing(ProjectList)
For Each prj In ProjectList
prj.Office = (From c In db.Clients Where prj.ClientID = c.ClientID Select c.ReviewOffice).FirstOrDefault
Next prj
End If
End Using