Как я могу получить доступ к данным из моей соединительной таблицы?

Я создал соединительную таблицу между двумя моими таблицами, чтобы создать между ними отношения «многие ко многим». Я могу сохранять в них данные, но не могу снова получить к ним доступ. Кстати, это написано в 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;

Я бы ожидал, что события будут заполнены всеми событиями, связанными с пользователем, но у него никогда не было никаких событий.


person Jon    schedule 10.11.2015    source источник
comment
Покажите свое сопоставление Event и UserInfo   -  person Colin Grealy    schedule 10.11.2015
comment
Что вы имеете в виду под картированием? Таблица UserToEvent является отношением между ними. Это то, что вы ищете?   -  person Jon    schedule 10.11.2015


Ответы (1)


Я нашел обходной путь, которого достаточно для моих нужд. Я добавил еще один атрибут в свою соединительную таблицу, что затем позволило мне получить к нему доступ в моих контроллерах (поскольку было не только два первичных ключа). Отсюда я смог собрать данные из нее, как и из любой другой таблицы. Однако не уверен, почему вышеуказанный метод не работает. Я использовал этот метод раньше без сучка и задоринки. Если у кого-то есть ответ, я хотел бы услышать его.

person Jon    schedule 10.11.2015