Получение ошибки недопустимого элемента в запросе 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