2015-02-12 99 views
2

嗨,我在我的代码中遇到问题。无法更新数据库实体

public static void settingSoundxStringLawyers_info() 
     { 

      mydatabaseEntities db2 = new mydatabaseEntities(); 

      var UniqueNameObjects = from a in db2.Lawyers_info 
            group a by a.Name into g 
            where g.Count()==1 
            select new Names { Name = g.Key }; 

      List<Names> list = UniqueNameObjects.ToList(); 
      for (int i=0; i<150 ; i++) 
      { 
       string name = list.ElementAt(i).Name; 
       Lawyers_info obj = db2.Lawyers_info.Where(l => l.Name == name).First(); 


       string scode = soundxmethod(obj.Name); 
       obj.SoundxString = scode; 
       db2.Entry(obj).State = EntityState.Modified; 
       //var dbEntityEntry = db2.Entry(obj); 
       //dbEntityEntry.Property(s=>s.SoundxString).IsModified = true; 

       Console.WriteLine("Index: ----> "+(i+1)); 
       //db2.Lawyers_info.Add(obj); 

       //db2.Set(Lawyers_info).SqlQuery("update Lawyers_info values(SoundxString = @p)",new sq) 
       db2.SaveChanges(); 
      } 
      db2.SaveChanges(); 
     } 

我试过每个注释行但不是woking。更改不会保存在数据库中。

回答

0

由于您正在从数据库中获取“Lawyers_info”实体,所以在更改属性(不需要设置EntityState.Modified)后,它的状态将为Modified。

另外你只需要调用一次SaveChanges()。在修改实体之后,或者在修改全部150之后,或者两者都不是。

另外请确保获取受SaveChanges影响的行(它返回一个int)。通过这种方式,您可以分辨出哪些行已被更新。 HTH