如何删除 ASP.Net MVC 索引视图 table 中的重复条目
How to remove duplicate entries in ASP.Net MVC Index View table
我有以下场景:
我有一个 Contact
,属性为 FirstName
和 LastName
。一个联系人可以有多个 PhoneNumbers
,也可以有多个 EmailAddresses
。我已将这些确定为具有共同关系的 3 个实体。请参阅下面的 table 定义:
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
现在我需要在我选择的 Web 应用程序中显示这些用户。我为视图选择了带有 Razor 引擎的 C# MVC。我正努力在 table 中模拟此视图。 table 需要操作链接来编辑、删除、创建新联系人和查看联系人的详细信息。我希望结果集显示如下:
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
转换为从它们相应的桥接 table 映射的写入方法。我现在面临的问题是它正在复制 UserContact
中的记录,从而使 table 包含大量冗余数据。例如 James Smith
的记录将重复 3 次。我怎样才能在 ASP.Net MVC 中实现这个而不需要任何重复的条目?
我会做这样的事情。请注意,我稍微更改了列名。有一个名为 ID 的列让我很恼火。它是一个 ContactID(或其他),无论它在哪个 table 中。我也非常不喜欢在相关 table 中为同一数据更改列名。
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
我有以下场景:
我有一个 Contact
,属性为 FirstName
和 LastName
。一个联系人可以有多个 PhoneNumbers
,也可以有多个 EmailAddresses
。我已将这些确定为具有共同关系的 3 个实体。请参阅下面的 table 定义:
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
现在我需要在我选择的 Web 应用程序中显示这些用户。我为视图选择了带有 Razor 引擎的 C# MVC。我正努力在 table 中模拟此视图。 table 需要操作链接来编辑、删除、创建新联系人和查看联系人的详细信息。我希望结果集显示如下:
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
转换为从它们相应的桥接 table 映射的写入方法。我现在面临的问题是它正在复制 UserContact
中的记录,从而使 table 包含大量冗余数据。例如 James Smith
的记录将重复 3 次。我怎样才能在 ASP.Net MVC 中实现这个而不需要任何重复的条目?
我会做这样的事情。请注意,我稍微更改了列名。有一个名为 ID 的列让我很恼火。它是一个 ContactID(或其他),无论它在哪个 table 中。我也非常不喜欢在相关 table 中为同一数据更改列名。
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