Я пытаюсь отобразить значения из 2 таблиц (с использованием кода EF) с использованием SQL JOIN
и WHERE
.Необработанные SQL-запросы с кодовым кодом EF не работают
Dim query = db.pt.SqlQuery("SELECT p.id, p.name, p.dob, pv.visitId, pv.vDate
FROM pt p
JOIN pt_v pv ON p.id = pv.id
WHERE p.id like @p0 OR p.name like @p1", str1, str2).ToList()
Я попробовал альтернативный способ. Ниже приведен код:
Dim id = New SqlParameter("@id", str1)
Dim name = New SqlParameter("@name", str2)
Dim query As String = "select p.id id, p.name name, p.dob dob, pv.visitId visitId, pv.vDate vDate
from pt p
join pt_v pv on p.id = pv.id
where p.id like @id or p.name like @name"
Dim Result = db.Database.SqlQuery(Of PtLookupVM)(query, id, name).ToList()
PtLookupVM мой ViewModel класс, который имеет следующие:
Public Property id As String
Public Property name As String
Public Property dob As String
Public Property visitId As String
Public Property vDate As String
Но выход результат для обоих нулевых строк.
Это является выборки данных:
Dim p As New List(Of pt) From {
New pt() With {.id = 1, .name = "siti", .dob = "2011-11-17"},
New pt() With {.id = 2, .name = "siti nur", .dob = "2011-12-17"}
}
Dim pv As New List(Of pt_v) From {
New pt_v() With {.visitId = 1, .id = 1, .vDate = "2016-01-17"},
New pt_v() With {.visitId = 2, .id = 1, .vDate = "2016-05-17"},
New pt_v() With {.visitId = 3, .id = 2, .vDate = "2016-07-17"}
}
Dim pList As New List(Of PtLookupVM) From {
New PtLookupVM() With {.id = 1, .name = "siti", .dob = "2011-11-17", .visitId = 1, .vDate = "2016-01-17"},
New PtLookupVM() With {.id = 1, .name = "siti", .dob = "2011-11-17", .visitId = 2, .vDate = "2016-05-17"},
New PtLookupVM() With {.id = 2, .name = "siti nur", .dob = "2011-12-17", .visitId = 3, .vDate = "2016-07-17"}
}
Что я пытаюсь получить на самом деле список людей, с именем «Siti». Но я не хочу избыточных значений. Таким образом, он должен только значения на дисплее, как показано ниже:
Это мой ожидается выход:
Dim pList As New List(Of PtLookupVM) From {
New PtLookupVM() With {.id = 1, .name = "siti", .dob = "2011-11-17", .visitId = 1, .vDate = "2016-01-17"},
New PtLookupVM() With {.id = 2, .name = "siti nur", .dob = "2011-12-17", .visitId = 3, .vDate = "2016-07-17"}
}
Можете ли вы включить образцы данных и ожидаемый результат? Хорошо, что вы используете подготовленное заявление. –
Я не вижу столбец 'id' таблицы' pv', но он используется в фактическом запросе. –
Каковы значения 'str1' и' str2', которые должны соответствовать ** данным образца **? Если вы получаете нулевые записи с ** альтернативным способом **, фильтр не соответствует. Если они совпадают, вы должны получить то, что вы указали в переменной 'pList'. Итак, в конце концов, что вы на самом деле получаете? –