Почему мой SubmitChanges () не работает в LINQ-to-SQL? - PullRequest
8 голосов
/ 25 февраля 2009

Я создал базу данных .MDF в своем приложении WPF.

Затем я сгенерировал классы LINQ-to-SQL и использовал LINQ, чтобы получить всех клиентов.

Затем я бегу через них и меняю каждую из их фамилий.

Однако, когда я вызываю SubmitChanges, база данных остается неизменной .

Я думал, что целью SubmitChanges () было отправить изменения в базу данных?

Что мне не хватает, как мне "отправить изменения" обратно в мою базу данных?

public Window1()
{
    InitializeComponent();

    Main2DataContext _db = new Main2DataContext();
    var customers = from c in _db.Customers
                    select c;

    foreach (var customer in customers)
    {
        customer.LastName = "CHANGED lastname"; //ListBox shows changes 
    }

    _db.SubmitChanges(); //does NOT save to database (???)

}

Ответы [ 2 ]

15 голосов
/ 25 февраля 2009

Мне кажется, я знаю, в чем проблема. Вы используете локальный файл .mdf? Если это так, проверьте папку bin / debug. Бьюсь об заклад, у вас есть база данных с изменениями. Я думаю, у вас есть файл .mdf в вашем проекте, который копируется в папку bin / debug при каждой сборке. Поэтому изменения сохраняются в копии, и вы не видите ее в копии, которая находится непосредственно в вашем проекте.

2 голосов
/ 25 февраля 2009

Убедитесь, что ваш _db не возвращается к новому контексту в любой момент между поиском и изменением, если это так, то это проблема. Также вы можете упростить назначение источника данных, выполнив TheListBox.ItemsSource = _db.Customers;. У меня есть много мест в текущем коде, где я делаю именно то, что вы описываете, и изменения хорошо распространяются. Дополнительное предложение, настройка ведения журнала в вашем контексте (установите _db.Log для некоторого устройства записи, я обычно использую Console.Out, чтобы я мог наблюдать изменения в окне вывода при отладке), чтобы вы могли видеть изменения, которые действительно происходят, когда вы звоните SubmitChanges().

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