2010-08-09 87 views
0

这里是我的代码LINQ to SQL:SubmitChanges()不起作用?

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 not updating on .SubmitChanges()

,但我查了一下发现Bet_Leagues_Teams确实有一个主键。

Bet_Leagues_Teams类:

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

AHHHH,MY可怕的错误。我忘记了Bet_Leagues_Teams可能不包含所需的记录。我必须检查记录是否存在,然后更新它,否则它不存在,我必须将其添加到表格中。对我感到羞耻。原谅我浪费你的时间。谢谢。

+2

那么Bet_League_Teams的主要关键是什么?另外,你为什么要为自己设置'matchedTeams.ID'? – 2010-08-09 14:59:39

+0

@Jon:我编辑了我的问题,添加了更多细节并修复了一些错别字。 – Vimvq1987 2010-08-09 15:03:56

+0

出于兴趣,您可以确认如果matchedTeams实例包含主键值吗?即。 ID属性有一个值?匹配团队的两个值是什么?团队ID(在数据被检索后)和团队ID的值是什么? – 2010-08-09 15:10:01

回答

0
using(var bt = new BachtuocvnDataContext()) 
{ 
    var matchedTeam = bt.Bet_Leagues_Teams.Single(lt => lt.LeagueID == leagueID); 
    matchedTeam.TeamID = teamID; 
    bt.SubmitChanges(ConflictMode.ContinueOnClonflict); 
} 
+0

它不起作用... – Vimvq1987 2010-08-09 15:08:13

+0

对不起,它与编辑后的示例基本相同。 – 2010-08-09 15:09:29

1
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

注意,如果有多个匹配的元素(其中,如果你的schemea车型“联盟”的理念正确,就会出现)

您可能Single()将抛出一个异常想在那里使用First()