База данных SQL Server CE и ADO.Net Entity Framework - данные не сохраняются - PullRequest
1 голос
/ 11 июня 2011

У меня есть файл базы данных SQL Server CE, и у меня есть объект ADO.NET Entity Framework с именем History. Я выполняю следующее, чтобы получить последний идентификатор:

var historyid = (from id in db.Histories // Get the current highest history Id
                select (Int32?)(id.Id)).Max();

HistoryID = Convert.ToInt32(historyid);

if (HistoryID == 0) // No current record exists
{
    HistoryID = 1; // Set the starter history Id
}

(не лучший способ, но это просто для проверки).

Это работает хорошо и возвращает правильное значение (если я вручную ввожу идентификатор 1, он возвращает 1, то же самое с 2 и т. Д.)

Проблема связана со следующим кодом:

History history = new History();
history.Id = 1;
history.SoftwareInstalled = "test";

db.AddToHistories(history);
db.SaveChanges();

Вышеописанное работает и проходит нормально, но изменения не сохраняются в базе данных! Почему это?

Вот моя переменная в БД: dbDeSluggerEntities db = new dbDeSluggerEntities();

Спасибо.

Редактировать: Вот обновление: я заметил, что когда я запускаю программу и отлаживаю ее, она показывает, что история была создана и вставлена, а также выдает ошибку уже существующего первичного ключа, это происходит каждый раз, когда я запускаю приложение (снова и снова). Тем не менее, когда я захожу в обозреватель сервера и щелкаю правой кнопкой мыши по базе данных и выбираю «Показать данные таблицы», она не показывает никаких данных. При повторном запуске программы нет ошибок первичного ключа или истории в отладке!

1 Ответ

2 голосов
/ 13 июня 2011

У меня была точно такая же проблема.По умолчанию база данных копируется в папку bin при запуске приложения, и это используется.

Мое решение состояло в том, чтобы перейти в свойства базы данных и настроить его на никогда не копировать и указать полный путь к файлу базы данных в строке подключения в файле конфигурации приложений.

...