Как добавить источник данных в Visual Studio
Учебник 6.3. Использование сущности Entity Framework в качестве источника данных Windows Forms
Чтобы выполнить действия, описанные в этом руководстве, сначала установите образец базы данных world, который можно загрузить со страницы документации MySQL. Вы также можете найти подробную информацию о том, как установить базу данных на той же странице.
Создание нового приложения Windows Forms
Первым шагом является создание нового приложения Windows Forms.
В Visual Studio выберите File , New , а затем Project в главном меню.
Выберите установленный шаблон приложения Windows Forms. Нажмите ОК . Решение создано.
Чтобы получить последнюю сборку Entity Framework для MySQL, загрузите пакет NuGet. В качестве альтернативы используйте инструмент настройки приложений MySQL, предоставляемый MySQL для Visual Studio 1.2.9 (или более поздней версии), чтобы получить последний пакет и согласовать конфигурацию. Дополнительные сведения об использовании этого средства см. в разделе Entity Framework.
Добавление модели данных сущности
Чтобы добавить модель данных объекта в решение, выполните следующие действия:
Рис. 6.11. Добавление модели данных сущности
Теперь вы увидите Мастер модели данных сущности. Вы будете использовать мастер для создания модели данных объекта из образца базы данных мира. Выберите значок EF Designer из базы данных (или Создать из базы данных в более ранних версиях Visual Studio). Нажмите Далее .
Теперь вы можете выбрать локальное (мировое) соединение с базой данных, которое вы установили ранее. Выберите следующие элементы:
Да, включить конфиденциальные данные в строку подключения.
Сохранить настройки подключения объекта в App.config как:
Если вы еще этого не сделали, вы можете создать новое подключение прямо сейчас, нажав Новое подключение (см. следующий рисунок). Дополнительные инструкции по созданию подключения к базе данных см. в разделе Создание подключения.
Рис. 6.12 Мастер модели данных объекта — подключение
Запишите параметры подключения объекта, которые будут использоваться в App.Config , так как они будут использоваться позже для написания необходимого управляющего кода. Нажмите Далее .
Мастер модели данных объекта подключается к базе данных.
Как показано на следующем рисунке, вы увидите древовидную структуру базы данных. Отсюда вы можете выбрать объект, который хотите включить в свою модель. Если вы также создали Представления и Сохраненные процедуры, эти элементы будут отображаться вместе со всеми таблицами. В этом примере вам просто нужно выбрать таблицы. Нажмите Готово, чтобы создать модель и выйти из мастера.
Рис. 6.13 Мастер модели данных объекта — объекты и настройки
Visual Studio создает модель с тремя таблицами (город, страна и язык страны), а затем отображает ее, как показано на следующем рисунке.
Рис. 6.14. Диаграмма модели данных сущности
В главном меню Visual Studio выберите «Сборка», а затем «Сборка решения», чтобы убедиться, что на данный момент все компилируется правильно.
Добавление нового источника данных
Теперь вы добавите в проект новый источник данных и увидите, как его можно использовать для чтения и записи в базу данных.
В главном меню Visual Studio выберите «Данные», а затем «Добавить новый источник данных». Вам будет представлен мастер настройки источника данных.
Выберите значок объекта. Нажмите Далее .
Выберите объект для привязки. Разверните дерево, как показано на следующем рисунке.
В этом руководстве вы выберете таблицу городов. После выбора таблицы городов нажмите кнопку Далее .
Рис. 6.15. Мастер настройки источника данных
Мастер подтвердит добавление объекта города. Нажмите Готово .
Теперь объект города появится на панели «Источники данных». Если панель «Источники данных» не отображается, выберите «Данные», а затем «Показать источники данных» в главном меню Visual Studio. Отобразится закрепленная панель.
Использование источника данных в форме Windows
На этом шаге описывается, как использовать источник данных в форме Windows.
На панели «Источники данных» выберите только что созданный источник данных и перетащите его в конструктор форм. По умолчанию объект «Источник данных» будет добавлен в качестве элемента управления «Представление сетки данных», как показано на следующем рисунке.
Элемент управления Data Grid View привязан к cityBindingSource , а элемент управления Navigator привязан к cityBindingNavigator .
Рис. 6.16. Дизайнер форм данных
Сохраните и перестройте решение, прежде чем продолжить.
Добавление кода для заполнения представления таблицы данных
Теперь вы готовы добавить код, чтобы убедиться, что элемент управления Data Grid View будет заполнен данными из таблицы базы данных города.
Дважды щелкните форму, чтобы получить доступ к ее коду.
Добавьте следующий код, чтобы создать экземпляр объекта Entity Data Model EntityContainer и получить данные из базы данных для заполнения элемента управления.
Сохраните и перестройте решение.
Запустите решение. Убедитесь, что сетка заполнена (см. пример на следующем рисунке) и что вы можете перемещаться по базе данных.
Рисунок 6.17 Элемент управления «Заполненная сетка»
Добавление кода для сохранения изменений в базе данных
На этом шаге объясняется, как добавить код, позволяющий сохранять изменения в базе данных.
Исходный компонент Binding гарантирует, что изменения, сделанные в элементе управления Data Grid View, также будут применены к привязанным к нему классам Entity. Однако эти данные необходимо сохранить обратно из сущностей в саму базу данных. Этого можно добиться, включив кнопку «Сохранить» в элементе управления «Навигатор» и добавив некоторый код.
В конструкторе форм щелкните значок сохранения на панели инструментов формы и убедитесь, что для его свойства Enabled установлено значение True .
Дважды щелкните значок сохранения на панели инструментов формы, чтобы отобразить его код.
Добавьте следующий (или аналогичный) код, чтобы данные сохранялись в базе данных, когда пользователь нажимает кнопку сохранения в приложении.
После добавления кода сохраните решение, а затем перестройте его. Запустите приложение и убедитесь, что изменения, сделанные в сетке, сохранены.
Класс в модели Entity Framework, связанный с какой-либо базой данных.
Набор данных, связанный с какой-либо базой данных.
Класс, представляющий сетевую службу, например службу данных Windows Communication Foundation (WCF) или службу REST.
Класс, представляющий службу SharePoint.
Класс или коллекция в вашем решении.
Если вы не используете функции привязки данных, наборы данных, Entity Framework, LINQ to SQL, WCF или SharePoint, понятие «источник данных» не применяется. Просто подключитесь напрямую к базе данных с помощью объектов SQLCommand и взаимодействуйте напрямую с базой данных.
Вы создаете и редактируете источники данных с помощью мастера настройки источника данных в приложении Windows Forms или Windows Presentation Foundation. Для Entity Framework сначала создайте классы сущностей, а затем запустите мастер, выбрав «Проект» > «Добавить новый источник данных» (более подробно описано далее в этой статье).
Окно «Источники данных»
После создания источника данных он появляется в окне инструмента «Источники данных».
Чтобы открыть окно «Источники данных», убедитесь, что ваш проект открыт, а затем нажмите Shift+Alt+D или выберите «Просмотр» > «Другие окна» > «Источники данных».
Вы можете перетащить источник данных из окна «Источники данных» на область разработки формы или элемент управления. Это приводит к созданию стандартного кода, отображающего данные из хранилища данных.
На следующем рисунке показан набор данных, помещенный в форму Windows. Если вы нажмете F5 в приложении, данные из базовой базы данных появятся в элементах управления формы.

Источник данных для базы данных или файл базы данных
Вы можете создать набор данных или модель Entity Framework для использования в качестве источника данных для базы данных или файла базы данных.
Набор данных
Чтобы создать набор данных в качестве источника данных, запустите мастер настройки источника данных, выбрав «Проект» > «Добавить новый источник данных». Выберите тип источника данных База данных и следуйте инструкциям, чтобы указать либо новое, либо существующее подключение к базе данных, либо файл базы данных.
Классы сущностей
Чтобы создать модель Entity Framework в качестве источника данных:
Выберите метод, которым вы хотите создать модель.

Добавьте модель в качестве источника данных. Сгенерированные классы отображаются в мастере настройки источника данных при выборе категории «Объекты».
Источник данных для службы
Чтобы создать источник данных из службы, запустите мастер настройки источника данных и выберите тип источника данных Служба. Это всего лишь ярлык диалогового окна «Добавить ссылку на службу», доступ к которому также можно получить, щелкнув правой кнопкой мыши проект в обозревателе решений и выбрав «Добавить ссылку на службу».
При создании источника данных из службы Visual Studio добавляет в проект ссылку на службу. Visual Studio также создает прокси-объекты, соответствующие объектам, возвращаемым службой. Например, служба, возвращающая набор данных, представлена в вашем проекте как набор данных; служба, возвращающая определенный тип, представлена в вашем проекте как возвращаемый тип.
Вы можете создать источник данных из следующих типов служб:
Элементы, отображаемые в окне «Источники данных», зависят от данных, возвращаемых службой. Некоторые службы могут не предоставить мастеру настройки источника данных достаточно информации для создания связываемых объектов. Например, если служба возвращает нетипизированный набор данных, после завершения работы мастера в окне «Источники данных» не появятся элементы. Это связано с тем, что нетипизированные наборы данных не предоставляют схему, поэтому у мастера недостаточно информации для создания источника данных.
Источник данных для объекта
Вы можете создать источник данных из любого объекта, который предоставляет одно или несколько общедоступных свойств, запустив мастер настройки источника данных и выбрав тип источника данных «Объект». Все общедоступные свойства объекта отображаются в окне Источники данных. Если вы используете Entity Framework и создали модель, здесь вы найдете классы сущностей, которые являются источниками данных для вашего приложения.
На странице «Выбор объектов данных» разверните узлы в представлении в виде дерева, чтобы найти объекты, к которым вы хотите привязаться. Представление в виде дерева содержит узлы для вашего проекта, а также для сборок и других проектов, на которые ссылается ваш проект.
Если вы хотите привязать объект в сборке или проекте, который не отображается в представлении в виде дерева, нажмите «Добавить ссылку» и используйте диалоговое окно «Добавить ссылку», чтобы добавить ссылку на сборку или проект. После добавления ссылки сборка или проект добавляются в представление в виде дерева.
Возможно, вам потребуется создать проект, содержащий ваши объекты, до того, как объекты появятся в представлении в виде дерева.
Для поддержки привязки данных с помощью перетаскивания объекты, реализующие интерфейс ITypedList или IListSource, должны иметь конструктор по умолчанию. В противном случае Visual Studio не сможет создать экземпляр объекта источника данных и отобразит ошибку при перетаскивании элемента в область конструктора.
Источник данных для списка SharePoint
Вы можете создать источник данных из списка SharePoint, запустив мастер настройки источника данных и выбрав тип источника данных SharePoint. SharePoint предоставляет данные через WCF Data Services, поэтому создание источника данных SharePoint аналогично созданию источника данных из службы. При выборе элемента SharePoint в мастере настройки источника данных открывается диалоговое окно «Добавить ссылку на службу», в котором вы подключаетесь к службе данных SharePoint, указывая на сервер SharePoint. Для этого требуется SharePoint SDK.
Вы можете создавать источники данных на основе ваших объектов в приложении Visual Studio. После того как вы определили тип данных в качестве источника данных в проекте, вы можете создавать формы, которые отображают данные модели, перетаскивая элементы из окна «Источники данных» на формы.Эти элементы становятся элементами управления в форме, привязанными к источнику данных.
В этом разделе вы создадите источник данных для типа Category в базе данных SofiaCarRental. Затем вы будете использовать этот источник данных для создания формы Windows с элементами управления, привязанными к данным. Для выполнения этих процедур вы должны уже добавить в проект модель Northwind.
Чтобы создать источник данных на основе типа категории:

- Создайте новую модель SofiaCarRental.
- Создайте свой проект
- В меню «Данные» выберите «Добавить новый источник данных» (в Visual Studio 2012 используйте команду меню «Проект» -> «Добавить новый источник данных»).
- На странице «Выберите тип источника данных» выберите «Объект».
- На странице «Выбор объекта, к которому вы хотите привязать» разверните узел проекта, разверните узел пространства имен проекта и выберите тип категории в древовидном представлении.
Нажмите «Готово». Источник данных «Категория» добавляется в окно «Источники данных» («Вид» -> «Другие окна» -> «Показать источники данных»).
- В окне «Источники данных» разверните узел «Категория».
- Перетащите узел «Категория» в форму. Это создает элементы управления categoryBindingSource и categoryBindingSourceNavigator в форме. В форму также добавляется CategoriesDataGridView.
Чтобы связать источник данных с результатом запроса LINQ:
В код программной части добавьте следующий код, создающий экземпляр OpenAccessContext.
Прикрепить к событию Load формы.
В обработчик события Load добавьте следующий код.
См. также
Авторское право © 2017, Progress Software Corporation и/или ее дочерние компании или филиалы. Все права защищены.
Перед началом этого проекта убедитесь, что выполнены предварительные условия, перечисленные в разделе Компиляция проектов. Выполните следующие шаги, чтобы создать простое приложение базы данных с использованием таблиц, созданных в предыдущем упражнении.





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

Если вам не удается установить соединение, возможно, ваша установка была выполнена неправильно. Компонент FairCom Database Engine устанавливается и запускается как служба Windows по умолчанию. Проверьте диспетчер служб Windows или переустановите FairCom DB.
Если вы используете лицензию разработчика, также возможно, что время ожидания ядра базы данных FairCom истекло и его необходимо перезапустить. См. раздел Мониторинг ядра базы данных FairCom.


Нажмите «ОК» в сообщении «Проверить подключение успешно», а затем еще раз «ОК» в диалоговом окне «Добавить подключение».


Если таблицы, показанные ниже, отсутствуют в списке, это означает, что вы не заполнили образец базы данных или выполнили одно из учебных пособий на основе консоли, в результате которого образец базы данных был удален. Обратитесь к разделу предварительных требований в разделе Компиляция ваших проектов, чтобы перезагрузить образец базы данных. Вы можете обновить следующий экран, нажав кнопку «Назад», а затем кнопку «Далее». Это нормально, если «Имя набора данных» в нижней части окна отличается от следующего изображения.

Мастер настройки источника данных добавляет новый источник данных в окно «Источники данных».



Примечание. Когда вы перетаскиваете первое поле в форму, Visual Studio добавляет элемент управления Binding Navigator.
При желании вы можете использовать инспектор свойств, чтобы изменить имена только что созданных полей на более описательные. Вот как выглядит наш проект после переименования полей:

Теперь сохраните и создайте свой проект. Запустите проект, нажав клавишу F5. Поэкспериментируйте с элементами навигации в верхней части окна, чтобы просмотреть тестовые данные.

Используя эту программу, которую вы только что создали:
Имейте в виду, что эта программа представляет собой всего лишь тестовую программу для «доказательства концепции», а не расширенное приложение. Это означает, среди прочего, что обработка исключений еще не реализована; поэтому эту программу очень легко сломать из-за необработанных исключений. Чтобы уменьшить вероятность этого, при использовании программы следует помнить о некоторых вещах:
Читайте также:
- Приложение для дублирования экрана телефона Android в автомобиле
- Интерлейсинг, что такое фотошоп
- Как объединить 2 фотографии в одну в фотошопе
- Как закрыть приложения на iphone
- Расстояние от края до заголовка в Word
Привязка объектов в качестве источников данных в приложениях платформа .NET Framework с помощью Visual Studio
Область применения:
Visual Studio Visual Studio для Mac
Visual Studio Code ![]()
Наборы данных и связанные классы являются устаревшими технологиями платформа .NET Framework с начала 2000-х годов, которые позволяют приложениям работать с данными в памяти во время отключения приложений от базы данных. Они особенно полезны для приложений, которые позволяют пользователям изменять данные и сохранять изменения обратно в базу данных. Хотя наборы данных оказались очень успешными, мы рекомендуем новым приложениям .NET использовать Entity Framework Core. Entity Framework предоставляет более естественный способ работы с табличными данными в виде объектных моделей, и он имеет более простой интерфейс программирования.
Visual Studio предоставляет средства разработки для работы с пользовательскими объектами в качестве источника данных в приложении. Если вы хотите хранить данные из базы данных в объекте, привязанном к элементам управления пользовательским интерфейсом, рекомендуется использовать Entity Framework для создания класса или классов. Entity Framework автоматически создает весь код отслеживания изменений, что означает, что любые изменения локальных объектов автоматически сохраняются в базе данных при вызове AcceptChanges в объекте DbSet. Дополнительные сведения см . в документации Entity Framework.
Подходы к привязке объектов в этой статье следует учитывать только в том случае, если приложение уже основано на наборах данных. Вы также можете использовать эти подходы, если вы уже знакомы с наборами данных, и данные, которые вы будете обрабатывать, табличны и не слишком сложные или слишком большие. Еще более простой пример, который включает загрузку данных непосредственно в объекты с помощью DataReader и ручного обновления пользовательского интерфейса без привязки данных, см. в статье «Создание простого приложения данных с помощью ADO.NET».
Требования к объекту
Единственным требованием для работы с инструментами проектирования данных в Visual Studio является то, что объекту требуется хотя бы одно общедоступное свойство.
Как правило, пользовательские объекты не требуют каких-либо определенных интерфейсов, конструкторов или атрибутов для работы в качестве источника данных для приложения. Однако если вы хотите перетащить объект из окна источников данных в область конструктора, чтобы создать элемент управления с привязкой к данным, и если объект реализует ITypedList объект или IListSource интерфейс, объект должен иметь конструктор по умолчанию. В противном случае Visual Studio не может создать экземпляр объекта источника данных и отображает ошибку при перетаскивании элемента в область конструктора.
Примеры использования пользовательских объектов в качестве источников данных
Хотя существует множество способов реализации логики приложения при работе с объектами в качестве источника данных, для баз данных SQL существует несколько стандартных операций, которые можно упростить с помощью объектов TableAdapter, созданных Visual Studio. На этой странице объясняется, как реализовать эти стандартные процессы с помощью TableAdapters. Он не предназначен для создания пользовательских объектов. Например, обычно выполняются следующие стандартные операции независимо от конкретной реализации объектов или логики приложения:
- Загрузка данных в объекты (обычно из базы данных).
- Создание типизированной коллекции объектов.
- Добавление объектов в коллекцию и удаление объектов.
- Отображение данных объекта пользователям в форме.
- Изменение и редактирование данных в объекте.
- Сохранение данных из объектов обратно в базу данных.
Загрузка данных в объекты
В этом примере данные загружались в объекты с помощью TableAdapters. По умолчанию TableAdapters создаются с двумя типами методов, которые извлекают данные из базы данных и заполняют таблицы данных.
- Метод TableAdapter.Fill заполняет существующую таблицу данных возвращаемыми данными.
- Метод TableAdapter.GetData возвращает новую таблицу данных, заполненную данными.
Самый простой способ загрузки пользовательских объектов с данными заключается в вызове TableAdapter.GetData метода, цикле по коллекции строк в возвращаемой таблице данных и заполнении каждого объекта значениями в каждой строке. Вы можете создать GetData метод, который возвращает заполненную таблицу данных для любого запроса, добавленного в TableAdapter.
Visual Studio называет запросы Fill TableAdapter и GetData по умолчанию, но эти имена можно изменить на любое допустимое имя метода.
В следующем примере показано, как провести цикл по строкам в таблице данных и заполнить объект данными:
private void LoadCustomers() < NorthwindDataSet.CustomersDataTable customerData = customersTableAdapter1.GetTop5Customers(); foreach (NorthwindDataSet.CustomersRow customerRow in customerData) < Customer currentCustomer = new Customer(); currentCustomer.CustomerID = customerRow.CustomerID; currentCustomer.CompanyName = customerRow.CompanyName; if (customerRow.IsAddressNull() == false) < currentCustomer.Address = customerRow.Address; >if (customerRow.IsCityNull() == false) < currentCustomer.City = customerRow.City; >if (customerRow.IsContactNameNull() == false) < currentCustomer.ContactName = customerRow.ContactName; >if (customerRow.IsContactTitleNull() == false) < currentCustomer.ContactTitle = customerRow.ContactTitle; >if (customerRow.IsCountryNull() == false) < currentCustomer.Country = customerRow.Country; >if (customerRow.IsFaxNull() == false) < currentCustomer.Fax = customerRow.Fax; >if (customerRow.IsPhoneNull() == false) < currentCustomer.Phone = customerRow.Phone; >if (customerRow.IsPostalCodeNull() == false) < currentCustomer.PostalCode = customerRow.PostalCode; >if (customerRow.IsRegionNull() == false) < currentCustomer.Region = customerRow.Region; >LoadOrders(currentCustomer); customerBindingSource.Add(currentCustomer); > >
Private Sub LoadCustomers() Dim customerData As NorthwindDataSet.CustomersDataTable = CustomersTableAdapter1.GetTop5Customers() Dim customerRow As NorthwindDataSet.CustomersRow For Each customerRow In customerData Dim currentCustomer As New Customer() With currentCustomer .CustomerID = customerRow.CustomerID .CompanyName = customerRow.CompanyName If Not customerRow.IsAddressNull Then .Address = customerRow.Address End If If Not customerRow.IsCityNull Then .City = customerRow.City End If If Not customerRow.IsContactNameNull Then .ContactName = customerRow.ContactName End If If Not customerRow.IsContactTitleNull Then .ContactTitle = customerRow.ContactTitle End If If Not customerRow.IsCountryNull Then .Country = customerRow.Country End If If Not customerRow.IsFaxNull Then .Fax = customerRow.Fax End If If Not customerRow.IsPhoneNull Then .Phone = customerRow.Phone End If If Not customerRow.IsPostalCodeNull Then .PostalCode = customerRow.PostalCode End If If Not customerRow.Is_RegionNull Then .Region = customerRow._Region End If End With LoadOrders(currentCustomer) CustomerBindingSource.Add(currentCustomer) Next End Sub
Создание типизированной коллекции объектов
Можно создавать классы коллекций для объектов или использовать типизированные коллекции, которые автоматически предоставляются компонентом BindingSource.
Если для коллекции требуются функциональные возможности, не предоставляемые базовой реализацией, BindingList необходимо создать пользовательскую коллекцию, чтобы при необходимости добавить в класс.
В следующем коде показано, как создать класс для строго типизированной Order коллекции объектов:
/// /// A collection of Orders /// public class Orders: System.ComponentModel.BindingList < // Add any additional functionality required by your collection. >
''' ''' A collection of Orders ''' Public Class Orders Inherits System.ComponentModel.BindingList(Of Order) ' Add any additional functionality required by your collection. End Class
Добавление объектов в коллекцию
Объекты добавляются в коллекцию путем вызова Add метода пользовательского класса коллекции или объекта BindingSource.
Метод Add автоматически предоставляется для пользовательской коллекции при наследовании.BindingList
В следующем коде показано, как добавить объекты в типизированной коллекции в :BindingSource
Customer currentCustomer = new Customer(); customerBindingSource.Add(currentCustomer);
Dim currentCustomer As New Customer() CustomerBindingSource.Add(currentCustomer)
В следующем коде показано, как добавить объекты в типированную коллекцию, наследуемую от BindingList :
В этом примере Orders коллекция является свойством Customer объекта.
Order currentOrder = new Order(); currentCustomer.Orders.Add(currentOrder);
Dim currentOrder As New Order() currentCustomer.Orders.Add(currentOrder)
Удаление объектов из коллекции
Вы удаляете объекты из коллекции путем вызова Remove или RemoveAt метода пользовательского класса коллекции или BindingSource.
RemoveAt Методы Remove автоматически предоставляются для пользовательской коллекции при наследовании.BindingList
В следующем коде показано, как находить и удалять объекты из типизированной BindingSource коллекции в методе RemoveAt :
int customerIndex = customerBindingSource.Find("CustomerID", "ALFKI"); customerBindingSource.RemoveAt(customerIndex);
Dim customerIndex As Integer = CustomerBindingSource.Find("CustomerID", "ALFKI") CustomerBindingSource.RemoveAt(customerIndex)
Отображение данных объекта пользователям
Чтобы отобразить данные в объектах пользователям, создайте источник данных объекта с помощью мастера настройки источника данных, а затем перетащите весь объект или отдельные свойства в форму из окна «Источники данных».
Изменение данных в объектах
Чтобы изменить данные в пользовательских объектах, привязанных к элементам управления Windows Forms, просто измените данные в связанном элементе управления (или непосредственно в свойствах объекта). Архитектура привязки данных обновляет данные в объекте.
Если приложению требуется отслеживание изменений и откат предлагаемых изменений в исходных значениях, необходимо реализовать эту функцию в объектной модели. Примеры отслеживания предлагаемых изменений в таблицах данных см. в разделе DataRowStateи HasChangesGetChanges.
Сохранение данных в объектах обратно в базу данных
Сохраните данные обратно в базу данных, передав значения из объекта в методы DBDirect TableAdapter.
Visual Studio создает методы DBDirect, которые можно выполнять непосредственно в базе данных. Эти методы не требуют объектов DataSet или DataTable.
Чтобы сохранить данные из коллекции объектов, выполните цикл по коллекции объектов (например, с помощью следующего цикла). Отправьте значения для каждого объекта в базу данных с помощью методов DBDirect TableAdapter.
В следующем примере показано, как использовать TableAdapter.Insert метод DBDirect для добавления нового клиента непосредственно в базу данных:
private void AddNewCustomers(Customer currentCustomer)
Private Sub AddNewCustomer(ByVal currentCustomer As Customer) CustomersTableAdapter.Insert( currentCustomer.CustomerID, currentCustomer.CompanyName, currentCustomer.ContactName, currentCustomer.ContactTitle, currentCustomer.Address, currentCustomer.City, currentCustomer.Region, currentCustomer.PostalCode, currentCustomer.Country, currentCustomer.Phone, currentCustomer.Fax) End Sub
См. также
Запрос и отображение данных Excel с помощью ASP.NET, ADO.NET и Visual C# .NET
В этой статье показано, как запрашивать и отображать данные с листа Excel на странице ASP.NET (ASPX) с помощью Visual C# .NET.
Исходная версия продукта: ASP.NET
Исходный номер базы знаний: 306572
Создание примера листа Excel
Примечание. Хотя в этом примере данные начинаются с ячейки A1, эти данные можно добавить в любые смежные ячейки на листе.
Создание примера ASP.NET с помощью Visual C# .NET
В этом примере кода показано, как запрашивать и отображать сведения на листе Excel. В следующем коде используется лист, созданный в предыдущем разделе.
- Откройте Microsoft Visual Studio .NET. Отобразится интегрированная среда разработки (IDE) Visual Studio .NET.
- В меню Файл выберите пункт Создать и затем пункт Проект.
- В диалоговом окне «Новый проект» в разделе «Типы проектов» щелкните «Проекты Visual C#». В разделе «Шаблоны» щелкните ASP.NET веб-приложения.
- В диалоговом окне «Новый проект» найдите текстовые поля«Имя» и «Расположение».
- Текстовое поле «Имя» недоступно (отображается серым или неактивным). Текстовое поле Location содержит текст (или аналогичный). http://localhost/WebApplication1
- Замените текст в текстовом поле « Расположение http://localhost/ExcelCSTest » и нажмите кнопку » ОК». Создается новый проект, который включает веб-форму с именем WebForm1.aspx.
using System.Data.OleDb; using System.Data;
// Create connection string variable. Modify the "Data Source" // parameter as appropriate for your environment. String sConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" + Server.MapPath("../ExcelData.xls") + ";" + "Extended Properties=Excel 8.0;"; // Create connection object by using the preceding connection string. OleDbConnection objConn = new OleDbConnection(sConnectionString); // Open connection with the database. objConn.Open(); // The code to follow uses a SQL SELECT command to display the data from the worksheet. // Create new OleDbCommand to return data from worksheet. OleDbCommand objCmdSelect =new OleDbCommand("SELECT * FROM myRange1", objConn); // Create new OleDbDataAdapter that is used to build a DataSet // based on the preceding SQL SELECT statement. OleDbDataAdapter objAdapter1 = new OleDbDataAdapter(); // Pass the Select command to the adapter. objAdapter1.SelectCommand = objCmdSelect; // Create new DataSet to hold information from the worksheet. DataSet objDataset1 = new DataSet(); // Fill the DataSet with the information from the worksheet. objAdapter1.Fill(objDataset1, "XLData"); // Bind data to DataGrid control. DataGrid1.DataSource = objDataset1.Tables[0].DefaultView; DataGrid1.DataBind(); // Clean up objects. objConn.Close();
Дополнительное объяснение кода
В примере кода в этой статье используется поставщик Microsoft Jet OLE DB для доступа к листу Excel. Этот код использует следующую строку подключения для подключения к листу:
// Create connection string variable. Modify the "Data Source" // parameter as appropriate for your environment. String sConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" + Server.MapPath("../ExcelData.xls") + ";" + "Extended Properties=Excel 8.0;";
Как указано в комментариях, необходимо изменить сведения о пути для конкретного листа Excel. Кроме того, необходимо также задать значение параметра Extended Properties для правильного подключения к файлу.
Строка подключения использует функцию Server.MapPath . Эта функция принимает путь, который Microsoft IIS (IIS) к файлу и возвращает путь к этому файлу на жестком диске. Например, в разделе «Создание примера листа Excel « создаетсяExcelData.xlsкорневом каталоге Веб-сайта, который обычно находится по C:\Inetpub\Wwwroot адресу . При этом также создается вложенная папка с именем ExcelCSTest в папке Wwwroot и файл с именем WebForm1.aspx в _ExcelCSTest_folder.
В этом примере путь к файлу на жестком диске выглядит следующим образом C:\Inetpub\Wwwroot\ExcelCSTest . Wwwroot содержит ExcelData.xls, ExcelCSTest содержит WebForm1.aspx.
Путь IIS к файлам выглядит следующим образом C:\Web Root\ExcelCSTest . Веб-корень содержитExcelData.xls, ExcelCSTest содержит WebForm1.aspx.
В этом случае относительный путь от страницы WebForm1.aspx к ExcelData.xlsфайла — .. /ExcelData.xls. . . / символы сообщают службам IIS о том, что нужно перейти на один уровень папки. Поэтому код возвращает Server.MapPath(«../ExcelData.xls») следующую строку:
C:\Inetpub\Wwwroot\ExcelData.xls
Использовать не требуется Server.MapPath . Вы также можете жестко заданный путь к этой информации или использовать любой метод, чтобы указать расположение файла Excel на жестком диске.
Ссылки
Дополнительные сведения об использовании ADO.NET см. в статье «Заполнение объекта DataSet из базы данных с помощью Visual C# .NET».
Примеры компаний, организаций, продуктов, доменных имен, адресов электронной почты, логотипов, людей, мест и событий, описанных здесь, являются вымышленной. Никакие связи с реальной компанией, организацией, продуктом, доменным именем, адресом электронной почты, логотипом, человеком, местами или событиями не предназначены или должны быть выведены.
Обратная связь
Были ли сведения на этой странице полезными?
Пошаговое руководство. Настройка поведения вставки, обновления и удаления классов сущностей
Область применения:
Visual Studio Visual Studio для Mac
Visual Studio Code ![]()
Наборы данных и связанные классы являются устаревшими технологиями платформа .NET Framework с начала 2000-х годов, которые позволяют приложениям работать с данными в памяти во время отключения приложений от базы данных. Они особенно полезны для приложений, которые позволяют пользователям изменять данные и сохранять изменения обратно в базу данных. Хотя наборы данных оказались очень успешными, мы рекомендуем новым приложениям .NET использовать Entity Framework Core. Entity Framework предоставляет более естественный способ работы с табличными данными в виде объектных моделей, и он имеет более простой интерфейс программирования.
Средства LINQ to SQL в Visual Studio предоставляют визуальную область конструктора для создания и редактирования классов LINQ to SQL (классов сущностей), основанных на объектах в базе данных. С помощью LINQ to SQL можно использовать технологию LINQ для доступа к базам данных SQL. Дополнительные сведения см. в разделе Встроенный язык запросов LINQ.
По умолчанию логика выполнения обновлений предоставляется средой выполнения LINQ to SQL. Среда выполнения создает инструкции по умолчанию и Delete инструкции на основе схемы Insert Update таблицы (определения столбцов и сведения о первичном ключе). Если вы не хотите использовать поведение по умолчанию, то можно настроить поведение обновления и назначить конкретные сохраненные процедуры для выполнения команд «Вставить», «Обновить» и «Удалить», необходимых для работы с данными в базе данных. Можно также сделать это, когда поведение по умолчанию не сгенерировано, например, когда ваши классы сущностей сопоставляются с представлениями. Кроме того, можно отменить поведение обновления по умолчанию, когда база данных требует доступа к таблице через сохраненные процедуры. Дополнительные сведения см. в разделе «Настройка операций с помощью хранимых процедур».
Данное пошаговое руководство требует наличия хранимых процедур InsertCustomer, UpdateCustomer и DeleteCustomer в базе данных Northwind.
В этом пошаговом руководстве приведены шаги, которые необходимо выполнить, чтобы переопределить поведение LINQ to SQL по умолчанию для сохранения данных обратно в базу данных с помощью хранимых процедур.
В этом пошаговом руководстве вы узнаете, как выполнить следующие задачи:
- Создайте приложение Windows Forms и добавьте в него файл LINQ to SQL.
- Создайте класс сущностей, сопоставленный с таблицей Northwind Customers .
- Создайте источник данных объекта, ссылающийся на класс LINQ to SQL Customer .
- Создайте форму Windows Form, содержащую DataGridView объект, привязанный к классу Customer .
- Реализуйте для формы функциональные возможности сохранения.
- Создайте DataContext методы, добавив хранимые процедуры в конструктор O/R.
- Настройте класс, чтобы использовать хранимые Customer процедуры для выполнения вставок, обновлений и удаления.
Необходимые компоненты
В этом пошаговом руководстве используется SQL Server Express LocalDB и пример базы данных Northwind.
- Если у вас нет SQL Server Express LocalDB, установите его на странице скачивания SQL Server Express или с помощью Установщика Visual Studio. В установщике Visual Studio можно установить SQL Server Express LocalDB как часть рабочей нагрузки хранилища данных и обработки или как отдельный компонент.
- Установите пример базы данных Northwind, выполнив следующие действия.
- В Visual Studio откройте окно обозреватель объектов SQL Server. (SQL Server обозреватель объектов устанавливает в составе рабочей нагрузки хранилища данных и обработки в Visual Studio Installer.) Разверните узел SQL Server. Щелкните правой кнопкой мыши экземпляр LocalDB и выберите новый запрос. Откроется окно редактора запросов.
- Скопируйте скрипт Northwind Transact-SQL в буфер обмена. Этот скрипт T-SQL создает базу данных Northwind с нуля и заполняет ее данными.
- Вставьте скрипт T-SQL в редактор запросов и нажмите кнопку «Выполнить «. Через некоторое время запрос завершает работу и создается база данных Northwind.
Создание приложения и добавление классов LINQ to SQL
Так как вы работаете с классами LINQ to SQL и отображаете данные в Windows Form, создайте новое приложение Windows Forms и добавьте файл классов LINQ to SQL.
Отображаемые на компьютере имена или расположения некоторых элементов пользовательского интерфейса Visual Studio могут отличаться от указанных в этой статье. Возможно, вы используете другой выпуск Visual Studio или другие параметры среды. Дополнительные сведения см. в разделе Персонализация среды IDE.
Создание проекта приложения Windows Forms, содержащего классы LINQ to SQL
- В Visual Studio в меню Файл выберите пункты Создать>Проект.
- Разверните Visual C# или Visual Basic в левой области, а затем выберите «Рабочий стол Windows».
- В средней области выберите тип проекта приложения Windows Forms.
- Присвойте проекту имя обновленияWithSProcsWalkthrough и нажмите кнопку «ОК«. Проект UpdatingwithSProcsWalkthrough создается и добавляется в Обозреватель решений.
- В меню Проект выберите Добавить новый элемент.
- Выберите шаблон Классы LINQ to SQL и введите Northwind.dbml в поле Имя.
- Нажмите кнопку Добавить. В проект добавляется пустой файл классов LINQ to SQL (Northwind.dbml), а конструктор O/R открывается.
Создание класса сущности Customer и источника данных объекта
Создайте классы LINQ to SQL, сопоставленные с таблицами базы данных, перетаскивая таблицы с сервера Обозреватель или базы данных Обозреватель в конструктор O/R. В результате получите классы сущностей LINQ to SQL, которые сопоставляются с таблицами базы данных. После создания классов сущностей, их можно использовать в качестве источников данных об объекте точно так же как другие классы, которые имеют общие свойства
Для создания класса сущностей Customer и настройки с ним источника данных
- На сервере Обозреватель или базе данных Обозреватель найдите таблицу Customer в версии SQL Server примера базы данных Northwind.
- Перетащите узел «Клиенты» с сервера Обозреватель или базы данных Обозреватель в область конструктора операций ввода-вывода или R. Создастся класс сущностей с именем Customer. Он имеет свойства, соответствующие столбцам в таблице Customers. Класс сущностей имеет имя Customer (не Customers), поскольку он представляет одного клиента из таблицы Customers.
Примечание. Такой метод переименования называется преобразованием во множественную форму. Его можно включить или отключить в диалоговом окне «Параметры». Дополнительные сведения см. в разделе «Практическое руководство. Включение и отключение плюрализации( конструктор операций ввода-вывода)».
Примечание. Если класс Customer недоступен, отмените работу мастера, выполните сборку проекта и снова запустите мастер.
Создание DataGridView для отображения данных клиента в Форме Windows
Создайте элементы управления, привязанные к классам сущностей, перетащив элементы источника данных LINQ в SQL из окна «Источники данных» в Windows Form.
Для добавления элементов управления, привязанных к классам сущностей
- Откройте форму Form1 в конструкторе.
- Из окна Источники данных перетащите узел Customer на форму Form1.
Примечание. Чтобы открыть окно Источники данных, выберите в меню Данные команду Показать источники данных.
private NorthwindDataContext northwindDataContext1 = new NorthwindDataContext();Private NorthwindDataContext1 As New NorthwindDataContextcustomerBindingSource.DataSource = northwindDataContext1.Customers;CustomerBindingSource.DataSource = NorthwindDataContext1.CustomersРеализация функций сохранения
По умолчанию опция создания кнопки Сохранить не активизирована и реализовать сохранение функциональных возможностей невозможно. Итак, код для сохранения измененных данных в базе данных, когда создаются привязанные к данным элементы управления для источников данных об объекте, не будет автоматически добавляться. В этом разделе объясняется, как включить кнопку сохранения и реализовать функции сохранения для объектов LINQ to SQL.
Для реализации кнопки Save Functionality (Сохранить функциональные возможности)
- Откройте форму Form1 в конструкторе.
- Выберите кнопку Сохранить на CustomerBindingNavigator (кнопка, на которой изображена дискета).
- В окне Свойства задайте для свойства Включено значение True.
- Дважды щелкните кнопку сохранить, чтобы создать обработчик события и переключиться в редактор кода.
- Добавьте в обработчик события для кнопки Сохранить следующий код:
northwindDataContext1.SubmitChanges();NorthwindDataContext1.SubmitChanges()Переопределите поведение по умолчанию для выполнения обновлений (вставки, обновления и удаления)
Для переопределения поведения по умолчанию при обновлении
- Откройте файл LINQ to SQL в конструкторе O/R. (Дважды щелкните по файлу Northwind.dbml в Обозревателе решений.)
- В Обозревателе сервера или Обозревателе базы данных разверните узел баз данных Northwind Хранимые процедуры найдите хранимые процедуры InsertCustomers, UpdateCustomers и DeleteCustomers.
- Перетащите все три хранимые процедуры в конструктор O/R. Сохраненные процедуры добавляются в дерево методов как методы DataContext. Дополнительные сведения см. в разделе Методы DataContext (реляционный конструктор объектов).
- Выберите класс сущности Customer в конструкторе O/R.
- В окне Свойства выберите свойство Вставка.
- Нажмите кнопку с многоточием (. ) рядом с кнопкой Использовать среду выполнения, чтобы открыть диалоговое окно Настройка поведения.
- Выберите Настроить.
- Выберите метод InsertCustomers в списке Настроить.
- Нажмите кнопку Применить, чтобы сохранить конфигурацию для выбранного класса и поведения.
Примечание. Можно продолжить настройку поведения для каждого сочетания класса и поведения при условии, что после каждого изменения будет производиться нажатие кнопки Применить. Если вы измените класс или поведение перед нажатием кнопки «Применить«, появится диалоговое окно предупреждения, предоставляющее возможность применить любые изменения.
Примечание. По умолчанию аргументы метода будут сопоставлены со свойствами класса, если их имена совпадают. Если имена свойств были изменены и больше не совпадают в таблице и в классе сущностей, то может потребоваться выбор эквивалентного свойства класса для сопоставления, если реляционный конструктор объектов не может определить правильное сопоставление. Кроме того, если отсутствуют допустимые свойства класса для сопоставления с аргументами метода, то можно установить Свойства класса в значение (Нет).
Хотя это не проблема для этого конкретного пошагового руководства, следует отметить, что LINQ to SQL обрабатывает автоматически созданные базы данных значения для удостоверений (автоматического увеличения), rowguidcol (GUID, созданного базой данных), и столбцы метки времени во время вставок и обновлений. Генерируемые базой данных значения в других типах столбцов будут неожиданно давать нулевое значение. Чтобы вернуть созданные базой данных значения, необходимо вручную задать IsDbGenerated для параметра AutoSync.Always, AutoSync.OnInsert или AutoSync.OnUpdate.AutoSync true
Тестирование приложения
Снова запустите приложение, чтобы убедиться, что хранимая процедура UpdateCustomers правильно обновляет запись клиента в базе данных.
- Нажмите клавишу F5.
- Измените запись в таблице, чтобы проверить поведение обновления.
- Добавьте новую запись, чтобы проверить поведение вставки.
- Нажмите кнопку Сохранить, чтобы сохранить изменения в базе данных.
- Закройте форму.
- Нажмите клавишу F5 и убедитесь, что обновленная запись и недавно вставленная запись сохранились.
- Удалите новую запись, созданную в шаге 3, чтобы проверить поведение удаления.
- Нажмите кнопку «Сохранить», чтобы представить изменения и стереть удаленную запись из базы данных.
- Закройте форму.
- Нажмите клавишу F5 и убедитесь, что удаленная запись была стерта из базы данных.
Примечание. Если в приложении используется SQL Server Express Edition, то в зависимости от свойства Копировать в выходной каталог файла базы данных изменения могут не отображаться, когда на шаге 10 нажимается клавиша F5.
Следующие шаги
В зависимости от требований приложения можно выполнить несколько шагов после создания классов сущностей LINQ to SQL. Ниже приводится перечень рекомендаций, позволяющих улучшить данное приложение.
- Реализуйте конкурентную проверку во время обновлений. Дополнительные сведения см. в разделе «Оптимистическое параллелизм»: обзор.
- Добавьте запросы LINQ в данные фильтра Дополнительные сведения см. в разделе «Общие сведения о запросах LINQ» (C#).
См. также
- Средства LINQ to SQL в Visual Studio
- Методы DataContext
- Практическое руководство. Назначение хранимых процедур для выполнения обновлений, вставок и удаления
- LINQ to SQL
- Запросы LINQ to SQL
