неизвестная архитектура .NET как-то подключается к базе данных SQL - PullRequest
0 голосов
/ 20 июля 2011

Итак, сегодня я обнаружил загадочную архитектуру .NET в приложении, которое разрабатываю на работе.Мне нужна помощь в понимании этой архитектуры.Человек, который написал это, давно ушел, и я застрял, чтобы понять это.Мы создаем объект в некотором коде из некоторого случайного рабочего процесса в веб-приложении (неважно для моего вопроса).Объект создается из класса, найденного в файле Designer.vb.Сначала я не мог увидеть файл, пока не нажал «показать все файлы» в обозревателе решений в Visual Studio.Есть 3 файла, связанных вместе: файл *.xsd, файл *.Designer.vb и файл *.xsx.Файл *.Designer.vb выглядит автоматически сгенерированным.Будем благодарны за любые рекомендации о том, как работает эта архитектура и как я могу изменить запросы SQL.

Цель:
Получить dbo.note.text из столбца таблицы dbo.note и поместитьэто в столбце dbo.exportnote.text.Я просто не понимаю, как он подключается к базе данных и получает данные из поля dbo.note.text.Я хочу сделать запрос более конкретным (возможно, добавить к нему предложение where).Но на самом деле я просто хочу понять, как он взаимодействует с базой данных.Большая часть кода использует хранимые процедуры.Так что я запутался в архитектуре.Было бы здорово, если бы вы могли объяснить, как этот код был сгенерирован автоматически.Похоже, что файл *.xsd является XML-файлом, когда я "Просмотреть в браузере" из обозревателя решений.

Код для создания экземпляра объекта класса конструктора:

Dim _TestResultsReportDataSet As New TestResultsReportDataSet

Изображение обозревателя решений:

enter image description here

Фрагмент частичного класса в конструкторе:

       <Global.System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "2.0.0.0"),  _
 Global.System.Serializable(),  _
 Global.System.ComponentModel.DesignerCategoryAttribute("code"),  _
 Global.System.ComponentModel.ToolboxItem(true),  _
 Global.System.Xml.Serialization.XmlSchemaProviderAttribute("GetTypedDataSetSchema"),  _
 Global.System.Xml.Serialization.XmlRootAttribute("TestResultsReportDataSet"),  _
 Global.System.ComponentModel.Design.HelpKeywordAttribute("vs.data.DataSet")>  _     
Partial Public Class TestResultsReportDataSet 
    Inherits Global.System.Data.DataSet

Звоните №1:

Dim filterString As String = String.Format("TestResultsReportId = {0}", _testResultsReportRow.TestResultsReportId)
Dim _noteRow As TestResultsReportDataSet.NoteRow
For Each _noteRow In _testResultsReportDataSet.Note.Select(filterString)
    Dim _exportNote As New Exportnote(DataApplicationContext)
    CopyNoteRowToExportNote(_exportNote, _noteRow, exportTestResultReportId)
    _exportNote.Save()
Next

Звоните в «CopyNoteRowToExportNote»:

Public Sub CopyNoteRowToExportNote(ByVal _exportNote As Exportnote, _
                                   ByVal _NoteRow As TestResultsReportDataSet.NoteRow, _
                                   ByVal exportTestResultReportId As Integer)
    With _exportNote
        .Exporttestresultreport.SetId(exportTestResultReportId)
        .LabAccessioningNumber = _NoteRow.LabAccessioningNumber
        .Text = _NoteRow.Text
    End With
End Sub

... если вам нужна дополнительная информация,просто спросите

Ответы [ 2 ]

1 голос
/ 24 июля 2011

Сильно типизированный DataSet был ответом. Хотя я до сих пор не могу понять, как или где таблицы SQL отображаются в строго типизированный DataTet DataTable, созданный в DataSet Designer, когда DataTable создается вручную, то есть нет TableAdaptor. Это один из моих нерешенных вопросов в моей очереди.

0 голосов
/ 15 марта 2012

Да, это действительно строго типизированный набор данных.Вы найдете несколько файлов .xsd в проекте для набора данных.Один и тот же набор данных при открытии в конструкторе будет иметь несколько (хотя бы один) адаптеров данных, связанных с ним, и в них будет храниться строка подключения.Обычно строка соединения, на которую они ссылаются, находится в файле конфигурации.Так что ищите.

Использование таких строго типизированных наборов данных упрощает операции ввода / обновления / удаления и выбора данных, поскольку мы можем предоставлять и проверять имена таблиц и столбцов во время компиляции

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...