Мне нужен совет специалиста по наборам строго типизированных данных в ADO.NET, сгенерированных Visual Studio. Вот подробности. Заранее спасибо.
Я хочу написать N-уровневое приложение, в котором слой Presentation находится в C # / окнах форм, Business Layer - это веб-сервис, а Data Access Layer - SQL db.
Итак, я использовал Visual Studio 2005 для этого и создал 3 проекта в решении.
проект 1 - уровень доступа к данным. В этом я использовал генератор наборов данных Visual Studio для создания строго типизированного набора данных и адаптера таблицы (для проверки я создал это на таблице клиентов в северном ветре). Набор данных называется NorthWindDataSet, а таблица внутри - CustomersTable.
У проекта 2 есть веб-сервис, который предоставляет только 1 метод - GetCustomersDataSet. Это использует адаптер таблицы библиотеки project1, чтобы заполнить набор данных и вернуть его вызывающей стороне. Чтобы иметь возможность использовать NorthWindDataSet и табличный адаптер, я добавил ссылку на проект 1.
project 3 - это приложение для создания выигрышных форм, которое использует веб-службу в качестве справочной информации и вызывает эту службу для получения набора данных.
В процессе создания этого приложения в PL я добавил ссылку на DataSet, сгенерированный выше в проекте 1, и при загрузке формы я вызываю веб-сервис и назначаю полученный набор данных из веб-сервиса этому набору данных. Но я получаю ошибку:
Невозможно неявно преобразовать тип
'PL.WebServiceLayerReference.NorthwindDataSet'
в «BL.NorthwindDataSet» e: \ My
Документы \ Visual Studio
2008 \ Projects \ DataSetWebServiceExample \ PL \ Form1.cs
Оба набора данных одинаковы, но из-за того, что я добавил ссылки из разных мест, я думаю, что я получаю вышеуказанную ошибку.
Итак, я добавил ссылку на проект 1 (который определяет набор данных) в проект 3 (пользовательский интерфейс) и использовал веб-сервис для получения DataSet и получения нужного типа, теперь, когда проект 3 (который имеет веб-форму) запускается, я получаю исключение во время выполнения ниже.
System.InvalidOperationException:
Ошибка в XML-документе (1,
5058). --->
System.Xml.Schema.XmlSchemaException:
Множественное определение элемента
«http://tempuri.org/NorthwindDataSet.xsd:Customers'
заставляет модель контента становиться
неоднозначный. Модель контента должна быть
сформирован так, что во время проверки
последовательность элементов информации об элементе,
частица содержала непосредственно,
косвенно или косвенно
который пытается проверить каждый элемент
в последовательности в свою очередь может быть
однозначно определяется без изучения
содержание или атрибуты этого
пункт, и без какой-либо информации
о предметах в оставшейся части
последовательность.
Я думаю, это может быть из-за некоторых ошибок перекрестных ссылок.
У меня вопрос, есть ли способ использовать сгенерированные Visual Studio DataSets таким образом, чтобы я мог использовать один и тот же DataSet на всех уровнях (для повторного использования), но отделить логику адаптера таблицы от уровня доступа к данным, чтобы веб-сервис абстрагируется от всего этого?
Если мне придется писать код вручную, я теряю качество, которое дает генератор наборов данных, а также, если есть столбцы, добавленные позже, мне нужно добавить его вручную и т. Д., Поэтому я хочу максимально использовать мастер Visual Studio.