У меня есть две таблицы:
CREATE TABLE [dbo].[Context] (
[Identity] int IDENTITY (1, 1) NOT NULL,
[Naam] nvarchar (255) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
[Code] nvarchar (10) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
[Omschrijving] ntext COLLATE SQL_Latin1_General_CP1_CI_AS NULL) ;
ALTER TABLE [dbo].[Context]
ADD CONSTRAINT [PK_Context]
PRIMARY KEY ([Identity]) ;
ALTER TABLE [dbo].[Context]
ADD CONSTRAINT [IX_Context_Naam]
UNIQUE ([Naam]) ;
ALTER TABLE [dbo].[Context]
ADD CONSTRAINT [IX_Context_Code]
UNIQUE ([Code]) ;
CREATE TABLE [dbo].[Component] (
[Identity] int IDENTITY (1, 1) NOT NULL,
[ContextLink] int NOT NULL,
[Naam] nvarchar (50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
[Code] nvarchar (10) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
[Omschrijving] ntext COLLATE SQL_Latin1_General_CP1_CI_AS NULL) ;
ALTER TABLE [dbo].[Component]
ADD CONSTRAINT [FK_ComponentContext]
FOREIGN KEY ([ContextLink])
REFERENCES [dbo].[Context] ([Identity]) ;
(Выше сценария должны создать оба.)
По сути, у меня есть таблица компонентов, которая ссылается на таблицу контекста.
Я создал сайт динамических данных, используя обе таблицы, и .NET позаботится о ссылках для меня. Это хороший способ быстро предоставить базовый веб-сайт, чтобы мы могли продолжить работу над бизнес-логикой.
Однако, когда я смотрю на таблицу компонентов в DDS, я замечаю, что ссылка показывает поле контекста code , а не поле Name . Итак, как заставить DDS использовать поле «Имя» вместо отображения ссылки на контекстную таблицу?
(Желательно с помощью чего-то простого, поскольку я имею дело с более чем 60 таблицами, похожими на эту. Большинство из них - простые таблицы поиска, облегчающие фильтрацию.)
Поскольку мы не собираемся работать на стороне GUI этого веб-приложения в течение нескольких месяцев, невозможно изменить что-либо в самом источнике DDS. Если это можно исправить в базе данных или модели Entity, пожалуйста, дайте мне знать!
Модель данных, которую я использую для этого проекта, проста: у каждой таблицы есть первичный ключ «Идентичность», который является полем autoIncrement. Поля Code и Naam (name) предназначены для описания конкретных данных и используются в других приложениях для заполнения комбинированных списков и фильтров. Эти приложения не взаимодействуют напрямую с базой данных, но используют XML-экспорт на основе базы данных. В этом экспортном XML ссылки на «Идентичность» заменяются ссылками на «Код». Это позволяет пользователю изменять код так, как ему нравится, без необходимости проходить всю базу данных для корректировки ссылок.
База данных имеет только одну цель: облегчить нескольким пользователям поддержку данных XML, которые использует другое приложение. У нас есть около 5 человек, которые вносят изменения в эти данные около 24/7, и экспортный XML генерируется примерно раз в неделю, который затем отправляется нашим клиентам. (Те, кто в основном используют эти данные в автономном приложении, на ноутбуках с ограниченным подключением к Интернету.)