Frage

Hier ist der Revelant Code.

       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 hat eine fk Beziehung auf TournamentTeam.TeamID, Mannschafts-ID ist eine Identitätsspalte

Was ich nicht verstehe, ist, dass, wenn TournamentTeam Einsätze bekommt, den neuen Identitätswert packt. Auch wenn ich den Code debuggen neue Anmelden werden recieving die neue Team-ID. Aber wenn es um die Erzeugung des Einsatzes kommt, vermeidet er diesen Wert vollständig und macht den Einsatz vor der select-Anweisung, wo er die neue Identitätsspalte packt.

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

Wie kann ich entweder machen LINQ to SQL den Wert für Team-ID verwenden, die ich angegeben haben, oder machen die select-Anweisung vor der Insert-Anweisung erzeugt werden?

War es hilfreich?

Lösung

Statt die Mannschafts-ID der Einstellung, stellen Sie das Team-Einheit die, die Sie gerade erstellt haben. Verzögerung der SubmitChanges beide einfügen, dann wird es die ids reparieren, wenn der Einsatz durchgeführt wird.

TournamentTeam newTeam = new TournamentTeam();
TournamentTeams.InsertOnSubmit(newTeam);

TournamentParticipant newSignup = new TournamentParticipant
{
    CheckedIn = false,
    TournamentID = tournamentId,
    UserID = participant.UserID,
    Team = newTeam
};

TournamentParticipants.InsertOnSubmit(newSignup);
SubmitChanges();
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top