У меня есть небольшое приложение, состоящее из DAL, BLL и самого приложения в разных проектах в рамках одного решения в Visual Studio 2010.
Мой DAL использует файл xsd для запроса базы данных, а мой BLL имеет методы для получения информации из DAL и выполнения с ней действий.
В настоящее время я пытаюсь вставить запись, используя код приложения, чтобы вызвать метод в BLL, который затем пытается вставить запись с помощью метода Tableadapter.Update(), сгенерированного в файле xsd DAL.
Я уже могу без проблем выбирать и обновлять записи, но не могу вставлять записи.
Насколько я знаю, метод TableAdapter.Update() должен уметь вставлять новую запись, если я предоставлю ей новую строку, однако он возвращает значение 0, что означает, что были затронуты 0 строк, поэтому он не работает.
Таблица, в которую я пытаюсь вставить, называется tblRoles.
Он имеет столбец «ID», который представляет собой столбец int, первичного ключа и идентификатора. У него есть столбец «Имя», который принимает nvarchar (50), и он имеет 4 столбца «CanAdduser» и т. Д., Которые принимают битовый тип.
Вот мой код:
Код приложения позади:
protected void CreateRole(object sender, EventArgs e) {
RolesBL roles = new RolesBL();
roles.CreateRole(NewRoleName.Text);
RolesGridView.DataBind();
}
БЛЛ:
private tblRolesTableAdapter adapter = new tblRolesTableAdapter();
public bool CreateRole(string Name) {
CMSDS.tblRolesDataTable roles = new CMSDS.tblRolesDataTable();
CMSDS.tblRolesRow row = roles.NewtblRolesRow();
row.Name = Name;
row.CanAddUsers = false;
row.CanEditUsers = false;
row.CanSuspendUsers = false;
row.CanChangeUserPasswords = false;
int result = adapter.Update(row);
if(result == 1) {
return true;
}
return false;
}
Насколько я понимаю, это должно вставить новую строку в таблицу, но adapter.Update(row)
продолжает возвращать 0, и я не знаю, почему.
Когда я отлаживаю, я вижу, что всем столбцам строк были присвоены правильные значения, и никаких ошибок не возникает.
Любая помощь будет оценена по достоинству!
Изменить:
Я забыл упомянуть, что когда я настроил запрос Fill,GetData() по умолчанию в файле xsd, я убедился, что он автоматически генерирует операторы Insert, Update и Delete.