Am o aplicație mică care constă dintr-un DAL, BLL și aplicația în sine, toate în proiecte diferite sub o singură soluție în Visual Studio 2010.
DAL-ul meu folosește un fișier xsd pentru a interoga baza de date, iar BLL-ul meu are metode de a obține informațiile de la DAL și de a face lucruri cu el.
În prezent, încerc să inserez o înregistrare utilizând codul din spatele aplicației pentru a efectua un apel la o metodă din BLL care apoi încearcă să inseze înregistrarea utilizând metoda Tableadapter.Update() generată în fișierul xsd al DAL.
Pot deja să selectez și să actualizez înregistrările fără probleme, dar nu pot introduce înregistrări.
Din câte știu, metoda TableAdapter.Update() ar trebui să știe să insereze o înregistrare nouă dacă îi ofer un rând nou, totuși returnează o valoare de 0 - ceea ce înseamnă că au fost afectate 0 rânduri, deci nu funcționează.
Tabelul în care încerc să îl inserez se numește tblRoles.
Are o coloană „ID”, care este o coloană int, cheie primară și identitate. Are o coloană „Nume” care ia nvarchar(50) și are 4 coloane „CanAdduser” etc. care iau un tip de bit.
Iată codul meu:
Codul APP din spatele:
protected void CreateRole(object sender, EventArgs e) {
RolesBL roles = new RolesBL();
roles.CreateRole(NewRoleName.Text);
RolesGridView.DataBind();
}
BLL:
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;
}
Din câte am înțeles, ar trebui să insereze un nou rând în tabel, dar adapter.Update(row)
continuă să returneze un 0 și nu știu de ce.
Când depanez, pot vedea că tuturor coloanelor de rând li s-au atribuit valorile corecte și că nu sunt generate erori.
Orice ajutor ar fi apreciat!
Editare:
Am uitat să menționez că atunci când am configurat interogarea implicită Fill, GetData() în fișierul xsd, m-am asigurat că generează automat instrucțiunile Insert, Update și Delete.