Вот откровенный код.
TournamentTeam newTeam = new TournamentTeam();
TournamentTeams.InsertOnSubmit(newTeam);
SubmitChanges();
TournamentParticipant newSignup = new TournamentParticipant
{
CheckedIn = false,
TournamentID = tournamentId,
UserID = participant.UserID,
TeamID = newTeam.TeamId
};
TournamentParticipants.InsertOnSubmit(newSignup);
SubmitChanges();
TournamentParticipants.TeamId имеет отношение fk к TournamentTeam.TeamID, TeamID - это столбец идентификации
Я не понимаю, что когда TournamentTeam получает вставки, она получает новое значение идентификатора. Даже когда я отлаживаю код, новая регистрация получает новый идентификатор команды. Но когда дело доходит до создания вставки, он полностью избегает этого значения и выполняет вставку перед оператором select, где он захватывает новый столбец идентификаторов.
exec sp_executesql N'INSERT INTO [dbo].[TournamentParticipants]([UserID], [TournamentID], [CheckedIn]) VALUES (@p0, @p1, @p2)
SELECT [t0].[TeamID] FROM [dbo].[TournamentParticipants] AS [t0] WHERE ([t0].[UserID] = @p3) AND ([t0].[TournamentID] = @p4)',N'@p0 int,@p1 int,@p2 bit,@p3 int,@p4 int',@p0=29805,@p1=247,@p2=0,@p3=29805,@p4=247
Как я могу либо заставить linq to sql использовать значение для идентификатора команды, которое я указал, либо создать оператор выбора перед оператором вставки?