2015-05-14 3 views
0

Я хочу, чтобы обновить таблицу, но ее не работаеттаблица Обновление с помощью LINQ

Вот код:

public Boolean setSectionTickSign(decimal Trans_ID, decimal Job_ID, string SectioName) 
{ 
    string sectionames = ""; 
    Transcription_Master Trans_Mastr = new Transcription_Master(); 
    try 
    { 
     var Trans_Master = (from Trans_Mast in r2ge.Transcription_Master where Trans_Mast.Transcription_Id == Trans_ID && Trans_Mast.Entity_Id == Job_ID select new 
     { 
      Trans_Mast.Completed_Trans_Sections 
     }).Distinct().ToList(); 
     var complt_trans = Trans_Master.AsEnumerable().Where(dr = > dr.Completed_Trans_Sections != null).ToList(); 
     if (complt_trans.Count == 0) 
     { 
      if (sectionames == "") 
      { 
       Trans_Mastr.Completed_Trans_Sections = SectioName; 
      } 
     } 
     else 
     { 
      Trans_Mastr.Completed_Trans_Sections = "," + SectioName; 
     } 
     int sc = r2ge.SaveChanges(); 
    } 
} 

Он не обновляет database..what в этом плохого ??

+1

Почему все короткие имена? У нас нет каких-либо ограничений в C#, чтобы иметь короткие имена и не создавать каких-либо проблем во время компиляции. Лично это очень трудно читать, потому что я НЕ знаю, что означает 'complt_trans'. Я закончил * или * полностью * или даже * компиляцию *? Необходимость погружения в дополнительный код для понимания переменной означает, что код не легко ремонтируется. –

+0

Вы не изменяете 'r2ge.Transcription_Master', но новый скопированный' Trans_Mastr' – Eric

+0

, то как внести изменения в таблицу @Eric –

ответ

0

не решена моя собственная проблема Transcription_Master Trans_Mastr = new Transcription_Master(); нет необходимости создавать новый объект

public Boolean setSectionTickSign(decimal Trans_ID, decimal Job_ID, string SectioName) 
{ 
    string sectionames = ""; 
    try 
    { 
     var empQuery = r2ge.Transcription_Master.Where(l => l.Transcription_Id == Trans_ID && l.Entity_Id == Job_ID).ToList(); 

     foreach (Transcription_Master Trans_Mastrr in empQuery) 
     { 
      if (empQuery.Count == 0) 
      { 
       if (sectionames == "") 
       { 
        Trans_Mastrr.Completed_Trans_Sections = SectioName; 
       } 
      } 
      else 
      { 
       Trans_Mastrr.Completed_Trans_Sections = Trans_Mastrr.Completed_Trans_Sections + "," + SectioName; 
      } 
     } 
     int sc = r2ge.SaveChanges(); 
    } 
0

Вы должны изменить этот кусок кода на такую ​​вещь:

var Trans_Master = (from Trans_Mast in r2ge.Transcription_Master 
        where Trans_Mast.Transcription_Id == Trans_ID 
        && Trans_Mast.Entity_Id == Job_ID 
        select Trans_Mast).Distinct().ToList(); 

В этом случае Ваша переменная Trans_Maser будет референсом на объект из коллекции, поэтому изменения будут сделаны на объекте, взятый из EF контекста и SaveChanges даст правильный результат.

+0

не работает..stil 'int sc' is 0 –

+0

У вас также есть две переменные с одинаковыми именами: Transcription_Master Trans_Mastr = new Transcription_Master(); Почему вы создаете здесь новую Transcription_Master()? вместо того, чтобы получать его из коллекции EF? – MadOX

+1

thnx решил мою проблему :) –

Смежные вопросы