свойства из моего объекта (oJobs
) выглядят следующим образом:Вызов функции внутри Entity Framework Select
Private _brandlist As List(Of DAL.Brand)
Public Property PostBrandList() As List(Of DAL.Brand)
Get
Return _brandlist
End Get
Set(ByVal value As List(Of DAL.Brand))
_brandlist = value
End Set
End Property
В базе данных, список бренда хранятся в виде строки, разделенной запятая, например, колонка «бренды» может быть строкой «3,45,2», где каждый номер представляет собой идентификатор бренда, хранящегося в другой таблице.
мой запрос на выборку, как показано ниже:
Dim jobposts As List(Of oJobs) = From j In db.JobPostings
Select New oJobs With { 'hiding all others for code brevity
.PostBrandList = 'problem is here'
}
С j.BrandList
возвращает строку, мне нужно будет разделить эту строку и для каждого номера, запустить другой запрос, чтобы, наконец, вернуться и назначить списка (DAL.Brand
) в .PostBrandList
для тех, кто мог бы спросить: «Что вы пробовали?»,
- Я запустить запрос, а затем сделал для каждого, чтобы добавить список брендов позже - успешно, но не оптимально
- Закодирована функция, которая принимает список как параметр и возвращает отдельный список объектов - очень глупо.
Кроме того, я не позволил нормализовать БД :(
Отправьте запрос, чтобы получить список идентификаторов, как вы уже пробовали. Создайте массив с идентификаторами и отправьте второй запрос и используйте '.Contains', чтобы получить все объекты с идентификаторами. Кроме того, создайте хранимую процедуру, которая делает это в базе данных. – Pawel
Правильный способ сделать это - ПОЛУЧИТЬ ПОЛУЧЕНИЕ КОЛОНКИ БРЕНДОВ. Это то, что мы называем внутренним эффектом платформы, а не правильным способом делать реляционные данные в РСУБД.У вас должна быть таблица, соединяющая ваши бренды с вашими работами. Это поможет в долгосрочной перспективе из-за лучшей индексации и т. Д. – Aron
Привет, Арон, прочитайте мое последнее предложение. В противном случае я полностью согласен с вами и много пробовал передумать! –