Как удалить повторяющиеся записи в ASP.Net MVC Index View table - PullRequest
0 голосов
/ 25 марта 2019

У меня есть следующий сценарий:

У меня есть Contact со свойствами FirstName и LastName.Контакт может иметь несколько PhoneNumbers и столько же EmailAddresses.Я определил их как 3 сущности с общими отношениями.Пожалуйста, смотрите определения таблиц ниже:

create table Contact
(
    ID int primary key not null identity(1,1),
    FirstName nvarchar(40),
    LastName nvarchar(40)
);
go

create table ContactNumber
(
    ID int primary key not null identity(1,1),
    PhoneNumber nvarchar(40)
);
go

create table EmailAddress
(
    ID int primary key not null identity(1,1),
    EmailAddress nvarchar(40)
);
go

create table UserContact
(
    ID int primary key not null identity(1,1),
    ContactID int foreign key references Contact(ID),
    ContactNumberID int foreign key references ContactNumber(ID),
    EmailID int foreign key references EmailAddress(ID)
);
go

Теперь мне нужно отобразить этих пользователей в веб-приложении по моему выбору.Я выбрал C # MVC с Razor Engine для просмотра.Я сражаюсь, чтобы смоделировать это представление в таблице.Таблица нуждается в Action Links для редактирования, удаления, создания нового контакта и просмотра информации о контакте.Я хочу, чтобы набор результатов отображался следующим образом:

FirstName | LastName | ContactNumber | EmailAddress
-------------------------------------------------------
James     | Smith    | 082 111 5454  | james@domain1.com | edit | details | delete
                                     | james@domain2.com
                                     | james@domain3.com
--------------------------------------------------------
Luther    | Arnolds  | 082 111 5455  | luther@domain1.com | edit | details | delete
                     | 082 111 5456  |
--------------------------------------------------------
Sarah     | Jones    | 082 111 5510  |  sarah@domain.com  | edit | details | delete
---------------------------------------------------------
          |          |               |

Однако я просто не нахожу способ записи для перевода столбцов ContactNumberID и EmailID из UserContact в сопоставление из соответствующих мостов.столы.Проблема, с которой я сталкиваюсь сейчас, заключается в том, что она дублирует записи в UserContact, в результате чего таблица содержит много избыточных данных.Например, запись для James Smith будет повторяться 3 раза.Как я могу добиться этого в ASP.Net MVC без дублирования записей?

1 Ответ

1 голос
/ 26 марта 2019

Я бы сделал что-то подобное.Обратите внимание, что я немного изменил имена столбцов.Это моя любимая мозоль иметь колонку с именем ID.Это ContactID (или любой другой) независимо от того, в какой таблице он находится. Мне также не нравится, когда имена столбцов меняются для одного и того же фрагмента данных в связанных таблицах.

create table Contact
(
    ContactID int primary key not null identity(1,1),
    FirstName nvarchar(40) not null,
    LastName nvarchar(40) not null
);
go

create table ContactNumber
(
    ContactNumberID int primary key not null identity(1,1),
    PhoneNumber nvarchar(40) not null,
    ContactID int not null,
    constraint FK_ContactNumber_Contact_ContactID Foreign Key (ContactID) references Contact(ContactID)
);
go

create table EmailAddress
(
    EmailAddressID int primary key not null identity(1,1),
    EmailAddress nvarchar(40) not null,
    ContactID int not null,
    constraint FK_EmailAddress_Contact_ContactID Foreign Key (ContactID) references Contact(ContactID)
);
go
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...