Базовая Entity Framework и Local Database, невозможно добавить запись
Прошло несколько лет с тех пор, как я использовал Entity Framework, так что, возможно, мой ум грязный, но я не могу добавить запись для сохранения в простой базе данных.
База данных является "Локальной базой данных", но я не делаю код в первую очередь. Он имеет две таблицы, Tab3 и Tab4. В Tab3 есть столбцы Id (уникальный, первичный ключ, Identity) и Col1 (nvarchar, разрешить нулевые значения), col2 (nvarchar, разрешить нулевые значения). Это заполнено двумя рядами. Модель EDMX и отображения выглядят хорошо для меня. Это должна быть простая настройка.
Код такой:
using (DBMod1Entities1 context = new DBMod1Entities1())
{
Tab3 t3 = new Tab3();
t3.Col1 = "e";
t3.Col2 = "3";
context.Tab3.Add(t3);
int res = context.SaveChanges();
Debug.WriteLine("Results from SaveChanges() " + res.ToString() );
int cnt = context.Tab3.Count();
Debug.WriteLine("Count records " + cnt);
}
он запускается и выводит вывод:
Results from SaveChanges() 1
Count records 3
Если я назову это:
using (DBMod1Entities1 context = new DBMod1Entities1())
{
int cnt = context.Tab3.Count();
Debug.WriteLine("Count records " + cnt);
}
Я получаю ожидаемое:
Count records 3
Если я продолжу добавлять глупые записи, число будет расти, как и ожидалось.
НО, если я перезапущу программу, данных не будет в локальной базе данных. Исходные две записи остаются в базе данных, но добавленные мной записи не сохранились.
Что я делаю неправильно?
1 ответ
Я на самом деле нашел ответ здесь: Файл базы данных.sdf не обновляется после закрытия приложения
Краткое объяснение состоит в том, что по умолчанию "Локальная база данных" копируется в папку BIN каждый раз, когда программа запускается из Visual Studio, поэтому заменяются данные предыдущего запуска. Я отключил "копирование" в свойствах и изменил свой app.config так, чтобы он указывал на базу данных, которую я хотел обновить.