2012-06-17 2 views
0

저는 Windows Phone 7 개발을 처음 사용하고 SQL에서 Linq에 문제가 있습니다. 개체를 업데이트하려고하지만 작동하지 않습니다. 나는 내가 원하는 속성을 업데이트하고 수정하려고하는 객체를 얻습니다. 그러나 SaveChanges를 호출하면 데이터가 데이터베이스에 업데이트되지 않습니다.WP7에서 Linq-To-SQL이 업데이트되지 않습니다.

이미 ISETool을 사용하여 데이터베이스를 다운로드하고 데이터가 전혀 업데이트되지 않았는지 확인했습니다.

쿼리 및 삽입 방법이 잘 작동한다는 것은 이상하지만 왜 업데이트하지 않는지 모르겠습니다.) (Updates.Count

[Table] 
public class Entrada : INotifyPropertyChanged, INotifyPropertyChanging 
{ 
    private int _Id; 
    [Column] 
    private int _DiaId; 
    [Column] 
    private int _ProjetoId; 

    private EntityRef<Dia> _Dia; 
    private EntityRef<Projeto> _Projeto; 

    private DateTime _Chegada;   
    private DateTime? _Saida; 

    [Column(IsPrimaryKey = true, IsDbGenerated = true, CanBeNull = false, DbType = "INT NOT NULL Identity")] 
    public int Id 
    { 
     get 
     { 
      return _Id; 
     } 
     set 
     { 
      if (value != _Id) 
      { 
       NotifyPropertyChanging("Id"); 
       _Id = value; 
       NotifyPropertyChanged("Id"); 
      } 
     } 
    } 

    [Column(CanBeNull=false)] 
    public DateTime Chegada 
    { 
     get 
     { 
      return _Chegada; 
     } 
     set 
     { 
      if (value != _Chegada) 
      { 
       _Chegada = value; 
       NotifyPropertyChanged("Chegada"); 
      }      
     } 
    } 

    [Association(Storage = "_Dia", ThisKey = "_DiaId", OtherKey="Id", IsForeignKey=true)] 
    public Dia Dia 
    { 
     get { return _Dia.Entity; } 
     set 
     { 
      NotifyPropertyChanging("Dia"); 
      _Dia.Entity = value; 

      if (value != null) 
      { 
       _DiaId= value.Id; 
      } 

      NotifyPropertyChanging("Dia"); 
     } 
    } 

    [Column(CanBeNull=true)] 
    public DateTime? Saida 
    { 
     get 
     { 
      return _Saida; 
     } 
     set 
     { 
      if (value != _Saida) 
      { 
       _Saida = value; 
       NotifyPropertyChanged("Saida"); 
      }      
     } 
    } 

    [Association(Storage = "_Projeto", ThisKey = "_ProjetoId", OtherKey = "Id", IsForeignKey = true)] 
    public Projeto Projeto 
    { 
     get 
     { 
      return _Projeto.Entity; 
     } 
     set 
     { 
      NotifyPropertyChanging("Projeto"); 
      _Projeto.Entity = value; 

      if (value != null) 
      { 
       _ProjetoId = value.Id; 
      } 

      NotifyPropertyChanging("Projeto"); 
     } 
    } 

    public event PropertyChangedEventHandler PropertyChanged; 
    public event PropertyChangingEventHandler PropertyChanging; 

    private void NotifyPropertyChanged(String propertyName) 
    { 
     if (null != PropertyChanged) 
     { 
      PropertyChanged(this, new PropertyChangedEventArgs(propertyName)); 
     } 
    } 

    private void NotifyPropertyChanging(string propertyName) 
    { 
     if (PropertyChanging != null) 
     { 
      PropertyChanging(this, new PropertyChangingEventArgs(propertyName)); 
     } 
    } 
} 

//UPDATE CODE: 
var query = (from e in timeSheetDB.Entradas where e.Dia.Id == this.Dia.Id && (!e.Saida.HasValue) select e); 
var entrada = query.FirstOrDefault(); 
if (entrada != null) 
{ 
    entrada.Saida = DateTime.Now; 
} 
timeSheetDB.SubmitChanges(); 

가 나는 또한 GetChangeSet()를 확인,하지만 난 당신이 감사 :-) 나를 도울 수 있기를 바랍니다 0 항상 :.

다음은 엔티티와 업데이트 방법 코드입니다 너희들!

답변

0

Saida 속성의 경우 PropertyChanging 이벤트를 발생시키지 않는 것 같습니다. 이 이벤트는 LINQ-to-SQL에서 중요하므로 열을 표시하는 모든 구성원을 업데이트하여 (PropertyChanged 이벤트 외에도)

+0

대단히 감사합니다! 일부 속성에서 PropertyChanging을 발생시키는 것을 정말로 잊었습니다! 문제는 내 앞에 있었고 나는 그것을 볼 수 없었다 :-) – rmoreira

관련 문제