2011-12-25 3 views
1

을 작동하지 않습니다 :SubmitChanges 나는 다음과 같은 한

var db = new datesDataContext(); 
    var query = 
    from ord in db.Dates 
    where ord.id == id 
    select ord; 

    foreach (Date ord in query) 
    { 
     ord.date1 = product.date1; 
     ord.name = product.name; 
    } 
    db.SubmitChanges(); 

그것은 모든 SubmitChanges가 데이터베이스에서 변경되지 않는 것을 제외하고 미세 (오류 등)를 실행합니다. ord.dat1 및 ord.name 확실히 설정되고

...

편집 : 여기 내 데이트 클래스입니다 (이 부분 말한다하지만 전체 클래스, 다른 곳에서 다른 정의의) :

[global::System.Data.Linq.Mapping.TableAttribute(Name="dbo.Dates")] 
public partial class Date 
{ 

    private System.Nullable<int> _id; 

    private System.Nullable<System.DateTime> _date1 = DateTime.Now; 

    private string _name; 

    public Date() 
    { 
    } 

    [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_id", DbType="Int")] 
    public System.Nullable<int> id 
    { 
     get 
     { 
      return this._id; 
     } 
     set 
     { 
      if ((this._id != value)) 
      { 
       this._id = value; 
      } 
     } 
    } 

    [global::System.Data.Linq.Mapping.ColumnAttribute(Name="date", Storage="_date1", DbType="DateTime")] 
    public System.Nullable<System.DateTime> date1 
    { 
     get 
     { 
      return this._date1; 
     } 
     set 
     { 
      if ((this._date1 != value)) 
      { 
       this._date1 = value; 
      } 
     } 
    } 

    [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_name", DbType="Text", UpdateCheck=UpdateCheck.Never)] 
    public string name 
    { 
     get 
     { 
      return this._name; 
     } 
     set 
     { 
      if ((this._name != value)) 
      { 
       this._name = value; 
      } 
     } 
    } 
} 
+0

데이터베이스의 날짜 테이블에 기본 키를 정의 했습니까? –

+0

@ Jani nope ... 그게 나쁜가요? (지금 막 주변에 mucking) 'id'열쇠는 1 차적이어야한다 그러나 1 차로 정의되지 않으며 기절 할 수있다. – tweetypi

답변

1

Date 클래스가 INotifyPropertyChanged를 구현합니까?

편집 : 당신의 날짜 클래스에서 INotifyPropertyChanged를 구현

public partial class Date : INotifyPropertyChanged 
{ 
     public event PropertyChangedEventHandler PropertyChanged; 

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

.....

각 세터 방법으로 값 변경 후이 코드를 사용하는 클래스 정의의 나머지

NotifyPropertyChanged("PropertyName"); 

케이스의 PropertyName은 id, date1 및 name입니다.

또한 기본 키를 지정해야합니다. 그렇지 않으면 변경 내용 추적이 작동하지 않습니다.

+0

아뇨, 그냥 자동 생성되었습니다 .. – tweetypi

+0

thats 요점. INotifyPropertyChanged를 구현하면 DataContext는 변경 사항을 업데이트 할 수 있습니다. 여기를 참조 http://msdn.microsoft.com/en-us/library/system.componentmodel.inotifypropertychanged.aspx –

+0

내 대답 –

1

이렇게하면됩니다. 구성 또는 모델 클래스에 문제가있어 야합니다. Date 클래스의 코드도 포함 할 수 있습니까? 나는 당신의 "이름"속성이 다음보고 있어요

: UpdateCheck = UpdateCheck.Never

나는이 설정은 해당 속성이 업데이트되지 일으키는 같은데요.

+0

그냥 내 날짜 클래스 코드를 올려 업데이트했습니다 ... – tweetypi