Только что решил эту проблему. Кто-то с той же проблемой может ссылаться на это. Почему не удается сохранить изменения в базе данных? Ответ Стива весьма полезен для понимания этой проблемы.
Я изменил свою базу данных, но когда я подключаю источник данных, он просто копируется снова, поэтому Кажется, обновление завершилось неудачно.
Вы можете написать соединение вручную, изменив | Directory | где ваша база данных на самом деле. Или сделайте что-то вроде этого:
string dataDir = AppDomain.CurrentDomain.BaseDirectory;
if (dataDir.EndsWith(@"\bin\Debug\")
|| dataDir.EndsWith(@"\bin\Release\"))
{
dataDir = System.IO.Directory.GetParent(dataDir).Parent.Parent.FullName;
AppDomain.CurrentDomain.SetData("DataDirectory", dataDir);
}
Но я не рекомендую этого, потому что это может изменить вашу исходную базу данных при отладке. Это должно быть только изменение моей базы данных в папке bin при сохранении исходной базы данных без изменений.
Вам нужно просто установить для свойства .mdf
file Copy to directory
значение Copy if newer
или Copy Never
( В этом случае добавьте скрипт для копирования файла в папку bin \ debug, только если он не существует). И не зацикливайтесь на исходном .mdf
в менеджере ресурсов.
И другие примечания:
Строки, подобные myTableTableAdapter.Adapter.UpdateCommand = sqlCommandBuilder.GetUpdateCommand();
, не нужны.
При связывании с DataAdapter DbCommandBuilder автоматически генерирует свойства InsertCommand, UpdateCommand и DeleteCommand объекта DataAdapter, если они являются нулевыми ссылками. Если команда уже существует для свойства, используется существующая команда. MSDN
Мне нужно проверить перед звонком BindingSource.EndEdit()
this.Validate();