Получение ошибки недопустимого элемента в запросе Webmatrix.Database

Я использую Webmatrix с VB.NET. У меня есть база данных, объявленная как

Dim db As Database
db = Database.Open("xxx")

Я строю этот запрос:

Dim strQuery As String
strQuery = "SELECT NomexSheeter.BlockNumber, NomexSheeter.WorkOrder, dbo_tbl_WIPMASTER_NF.ITEM_NBR " _
            & "FROM NomexSheeter INNER JOIN dbo_tbl_WIPMASTER_NF ON NomexSheeter.WorkOrder = dbo_tbl_WIPMASTER_NF.WORK_ORDER " _
            & "WHERE NomexSheeter.WorkOrder = @0 AND NomexSheeter.BlockNumber = @1"

Я называю запрос следующим образом:

Dim data = db.Query(strQuery, "99A", "901C")

Вот какая-то разметка...

<input type="hidden" id="barcodeValue" value="@data.ITEM_NBR"/>

Я получаю ошибку компиляции при запуске страницы, которая говорит: 'ITEM_NBR' не является членом 'System.Collections.Generic.IEnumerable(Of Object)'.

Так как в Интернете очень мало документации по VB.NET Webmatrix, мне остается только догадываться.

1 ответ

Решение

Ваш тип возврата - это коллекция. Это IEnumerable(Of Object). Чтобы получить доступ к свойствам отдельных элементов в коллекции, вы должны использовать ElementAt() чтобы получить доступ к конкретному элементу или For Each цикл для доступа к каждому элементу по очереди.

Dim data = db.QuerySingle(strQuery, "99A", "901C")
<input type="hidden" id="barcodeValue" value="@data.ElementAt(0).ITEM_NBR"/>

Или вы можете использовать метод First для перехода к первой строке, если вы уверены, что будет возвращен хотя бы один из них:

Dim data = db.QuerySingle(strQuery, "99A", "901C")
<input type="hidden" id="barcodeValue" value="@data.First().ITEM_NBR"/>

Если вы ожидаете, что только одна строка данных будет соответствовать вашим критериям, вы должны использовать QuerySingle метод вместо Query метод. Это возвращает объект, и вы можете получить доступ к его свойствам напрямую.

Dim data = db.QuerySingle(strQuery, "99A", "901C")
<input type="hidden" id="barcodeValue" value="@data.ITEM_NBR"/>

В этой статье, посвященной C#, рассказывается больше о различных методах базы данных и их типах возвращаемых данных, но вы должны понимать, почему каждый тип возвращаемых данных должен обрабатываться по-разному: http://www.mikesdotnetting.com/Article/214/How-To-Check-If-A-Query-Returns-Data-In-ASP.NET-Web-Pages

Другие вопросы по тегам