LINQ to SQL: SubmitChanges () не работает? - PullRequest
0 голосов
/ 09 августа 2010

Вот мой код

var bt = new BachtuocvnDataContext();
        var matchedTeams = (from lt in bt.Bet_Leagues_Teams
                         where lt.LeagueID == leagueID
                         select (lt)).Single();
        matchedTeams.TeamID = teamID;
        bt.SubmitChanges(ConflictMode.ContinueOnConflict);

Он не обновляет таблицу.Традиционный запрос работает хорошо, я нашел похожий вопрос здесь:

LINQ не обновляется .SubmitChanges ()

, но я проверил и обнаружил, что Bet_Leagues_Teams действительно имеет первичный ключ,

Bet_Leagues_Teams class:

int ID (primary key)
int LeagueID;
int TeamID;

Аааа, МОЯ УЖАСНАЯ ОШИБКА.Я забыл, что Bet_Leagues_Teams может не содержать необходимую запись.Я должен проверить, существует ли запись, а затем обновить ее, или она не существует, и я должен добавить ее в таблицу.Мне стыдно.Прости меня за трату времени.Спасибо.

Ответы [ 3 ]

1 голос
/ 09 августа 2010
using(BachtuocvnDataContext bt = new BachtuocvnDataContext() ) 
{ 
    Bet_Leagues_Teams matchedTeam = 
        bt.Bet_Leagues_Teams.Where(lt => lt.LeagueID == leagueID)
        .SingleOrDefault(); 

    if(matchedTeam != null)
    {
        matchedTeam.TeamID = teamID; 
        bt.SubmitChanges(ConflictMode.ContinueOnClonflict); 
    }
} 
0 голосов
/ 09 августа 2010

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

Вы можете использоватьFirst() там.

0 голосов
/ 09 августа 2010
using( var bt = new BachtuocvnDataContext() )
{
    var matchedTeam = bt.Bet_Leagues_Teams.Single( lt => lt.LeagueID == leagueID );
    matchedTeam.TeamID = teamID;
    bt.SubmitChanges( ConflictMode.ContinueOnClonflict );
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...