SubmitChanges в базу данных не работает - PullRequest
1 голос
/ 25 декабря 2011

У меня есть следующее:

    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 определенно установлены ...

edit: вот мой класс дат (он говорит частично, но это весь класс, другого определения нет в другом месте):

[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;
            }
        }
    }
}

Ответы [ 2 ]

1 голос
/ 25 декабря 2011

Это должно работать.Что-то должно быть не так с вашей конфигурацией или вашими модельными классами.Вы также можете включить код из класса Date?

Я вижу это рядом с вашим свойством "name": UpdateCheck = UpdateCheck.Never

Я предполагаю, что этот параметр вызываетсвойство не обновлять.

1 голос
/ 25 декабря 2011

Ваш класс Date реализует INotifyPropertyChanged?

РЕДАКТИРОВАТЬ: внедрить INotifyPropertyChanged в свой класс Date

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.

Вам также необходимо указать первичный ключ, иначе отслеживание изменений не будет работать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...