如何访问连接表中的数据?

Posted

技术标签:

【中文标题】如何访问连接表中的数据?【英文标题】:How can I access data from my junction table? 【发布时间】:2015-11-10 00:40:47 【问题描述】:

我在我的两个表之间创建了一个联结表,以在它们之间创建多对多关系。我可以将数据保存到它们,但无法再次访问该数据。顺便说一下,这是用MVC ASP.NET写的。

我的第一张桌子:

CREATE TABLE [dbo].[UserInfo] (
[Id]        INT             IDENTITY (1, 1) NOT NULL,
[FirstName] NVARCHAR (50)   NULL,
[LastName]  NVARCHAR (50)   NULL,
[Email]     NVARCHAR (256)  NOT NULL,
[Image]     VARBINARY (MAX) NULL,
[Approved]  BIT             NOT NULL,
[Color]     NVARCHAR (10)   NULL,
PRIMARY KEY CLUSTERED ([Id] ASC)
);

我的第二张桌子:

CREATE TABLE [dbo].[Events] (
[Id]        NVARCHAR (128) NOT NULL,
[Name]      NVARCHAR (100) NOT NULL,
[StartDate] DATETIME       NULL,
[EndDate]   DATETIME       NULL,
[Approved]  BIT            NOT NULL,
[room_id]   INT            NULL,
[color]     NVARCHAR (10)  NOT NULL,
[Owner]     INT            NULL,
PRIMARY KEY CLUSTERED ([Id] ASC),
CONSTRAINT [FK_Events_Rooms] FOREIGN KEY ([room_id]) REFERENCES [dbo].[Rooms] ([_key])
);

我的联结表:

CREATE TABLE [dbo].[UserToEvent] (
[UserId]  INT            NOT NULL,
[EventId] NVARCHAR (128) NOT NULL,
CONSTRAINT [UserId_EventId_pk] PRIMARY KEY CLUSTERED ([UserId] ASC, [EventId] ASC),
CONSTRAINT [FK_User] FOREIGN KEY ([UserId]) REFERENCES [dbo].[UserInfo] ([Id]),
CONSTRAINT [FK_Event] FOREIGN KEY ([EventId]) REFERENCES [dbo].[Events] ([Id])
);

添加新关系的代码:

Event e = await db.Events.FindAsync(id);
string email = User.Identity.Name;
UserInfo user = db.UserInfoes.Where(x => x.Email == email).First();
user.Events.Add(e);
e.UserInfoes.Add(user);
db.Entry(user).State = EntityState.Modified;
db.Entry(e).State = EntityState.Modified;
await db.SaveChangesAsync();

访问关系的代码:

UserInfo user = await db.UserInfoes.FindAsync(id);
List<Events> events = user.Events;

我希望事件中包含与用户关联的所有事件,但它从来没有任何事件。

【问题讨论】:

显示EventUserInfo的映射 映射是什么意思?表 UserToEvent 是两者之间的关系。这就是你要找的吗? 【参考方案1】:

我找到了一个足以满足我需求的解决方法。我在连接表中添加了另一个属性,然后允许我在我的控制器中访问它(因为不仅有两个主键)。从这里我可以像任何其他表格一样从中收集数据。不知道为什么上述方法不起作用。我以前使用过这种方法没有任何问题。如果有人有答案,我很乐意听到。

【讨论】:

以上是关于如何访问连接表中的数据?的主要内容,如果未能解决你的问题,请参考以下文章

如何从包含要更新的基表中的数据的连接表中获取数据?

用JAVA快速的将一个表中的数据导入到另一个表里

如何删除数据库中的一行

访问链接表连接属性已损坏 - 如何修复(或删除)?

sqlServer:两个数据库如何互相访问里面的表数据

如何连接两个表中的数据并将结果插入到新表中?