Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Проектирование клиентского приложения / 7 сообщений из 7, страница 1 из 1
31.01.2011, 12:33
    #37087962
Good_shepherd
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проектирование клиентского приложения
Имеется следующая таблица:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
CREATE TABLE AutoShows
(
	AutoShowID			int		NOT NULL	IDENTITY( 1 , 1 ),
	AutoShowName			nvarchar( 100 )	NOT NULL,
	CityID				int		NOT NULL,
	Phone				char( 11 )	NOT NULL,
	Email				nvarchar( 25 )	NOT NULL,
	CONSTRAINT PK_AutoShows
		PRIMARY KEY (AutoShowID),
	CONSTRAINT FK_AutoShows_Cities
		FOREIGN KEY (CityID) REFERENCES Cities (CityID)
)
Для отображении информации в клиентском приложении используется представление:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
CREATE VIEW vwAutoShows
AS
SELECT
	AutoShows.AutoShowID,
	AutoShows.AutoShowName,
	Cities.CityName AS City,
	AutoShows.Phone,
	AutoShows.Email
FROM AutoShows
INNER JOIN Cities
	ON AutoShows.CityID = Cities.CityID

При этом вся основная работа (т.е. вставка, удаление, изменение) ведется с таблицей, представление используется лишь для отображения информации, но в приложении одновременно хранится информация из обоих источников. Насколько оправдан такой подход? И как исправить положение? Хотелось бы избежать дублирования?
Может, работать с представлением через триггеры и на клиенте хранить только информацию из представления. Или на клиенте самостоятельно связывать таблицы AutoShows и Cities? Есть какие-то общие рекомендации или решение зависит от конкретного случая?
Клиентское приложение использует ADO.NET (типизированный DataSet).
Хотелось бы получить ваш совет.
...
Рейтинг: 0 / 0
31.01.2011, 12:40
    #37087984
няка
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проектирование клиентского приложения
Good_shepherd...но в приложении одновременно хранится информация из обоих источников.


зачем?
...
Рейтинг: 0 / 0
31.01.2011, 12:49
    #37088015
Good_shepherd
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проектирование клиентского приложения
Все операции вставки, изменения, удаления данных производятся с помощью SqlDataAdapter:

Код: plaintext
1.
2.
AutoLotDataSet.AutoShowsRow rowAutoShow = _dsAutoLot.AutoShows.FindByAutoShowID(autoShowID);
rowAutoShow["AutoShowName"] = txtAutoShowName.Text.Trim();
int rowsAffected = _adptrAutoShows.Update(_dsAutoLot.AutoShows);

Код: plaintext
1.
2.
AutoLotDataSet.AutoShowsRow rowAutoShow = _dsAutoLot.AutoShows.FindByAutoShowID(autoShowID);
rowAutoShow.Delete();
int rowsAffected = _adptrAutoShows.Update(_dsAutoLot.AutoShows);

Чтобы это было возможно, приходится также хранить данные и из таблицы AutoShows.
...
Рейтинг: 0 / 0
31.01.2011, 13:32
    #37088193
няка
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проектирование клиентского приложения
Good_shepherd,

так это вы сами себя в эти рамки загнали
датаадаптер это абстракция, никак не привязанная к конкретной таблице
...
Рейтинг: 0 / 0
31.01.2011, 13:40
    #37088227
Good_shepherd
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проектирование клиентского приложения
Дело в том, что я пользуюсь типизированным DataSet, сгенерированным Visual Studio. Поэтому все SqlDataAdapter также являются типизированными, например AutoLotDataSet.AutoShowsTableAdapter, AutoLotDataSet.CitiesTableAdapter и т.п.
...
Рейтинг: 0 / 0
31.01.2011, 15:34
    #37088673
Good_shepherd
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проектирование клиентского приложения
Я пробовал использовать триггеры INSTEAD OF для представления, но даже в этом случае сгенерированный SqlDataAdapter этого представления не имеет метода Update. Может просто следует использовать хранимые процедуры (по процедуре на вставку, удаление, изменение). Какой подход будет лучшим?
...
Рейтинг: 0 / 0
31.01.2011, 15:51
    #37088727
няка
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проектирование клиентского приложения
Good_shepherd,

так я еще раз повторяю вы сами себя загнали в угол
не пользуйте датаадаптер сгенереный по умолчанию, подправьте его под свою задачу
...
Рейтинг: 0 / 0
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Проектирование клиентского приложения / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]