Соединение двух моделей вместе для доступа в поле зрения - PullRequest
1 голос
/ 06 января 2020

У меня 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...