Доброе время суток! Начал изучать технологию ASP.NET и вот решил создавать приложение с использованием промежуточного слоя BLL Беда в том, что все методы работают кроме Delete: 1) передаю параметром весь объект класса, то в метод он приходит с значениями null или 0 (в зависимости от типа); 2) пробовал и передавать только id (записывал и DataKeyNames и <Parameters></Parameters>), но толку мало...выдает ошибку, что метод не найден пробовал задавать параметр через событие GridView1_RowDeleting - тоже ничего Уже второй день копаюсь и понять не могу( подскажите, пожалуйста, где я натупил и как оно должно быть правильно. вот мой код:метод для удаления Код | [DataObjectMethod(DataObjectMethodType.Delete)] public void DeleteUs er(User toDelete) { DataContext db = new DataContext(GetConnection()); Table<User> Users = db.GetTable<User>(); User delete_user = Users.Where(u => u.UserId == toDelete.UserId).First(); Users.DeleteOnSubmit(delete_user); db.SubmitChanges(); } |
код соответственно формы .aspx Код | <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="TestApp.WebForm1" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <ht ml xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title></title> </head> <body> <fo rm id="form1" runat="server"> <div>
</div> <asp:ObjectDataSource ID="ObjectDataSource1" runat="server" DataObjectTypeName="TestApp.ClasesDataSource.User" DeleteMethod="DeleteUser" InsertMethod="InsertUser" SelectMethod="SelectUsers" TypeName="TestApp.ClasesDataSource.UsersObjectDataSource" UpdateMethod="UpdateUser"> </asp:ObjectDataSource> <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataSourceID="ObjectDataSource1"> <Columns> <asp:CommandField ShowDeleteButton="True" /> <asp:BoundField DataField="UserId" HeaderText="UserId" SortExpression="UserId" ReadOnly="True" /> <asp:BoundField DataField="Name" HeaderText="Name" SortExpression="Name" /> <asp:BoundField DataField="Login" HeaderText="Login" SortExpression="Login" /> <asp:BoundField DataField="Password" HeaderText="Password" SortExpression="Password" /> <asp:BoundField DataField="Email" HeaderText="Email" SortExpression="Email" /> <asp:BoundField DataField="Phone" HeaderText="Phone" SortExpression="Phone" /> </Columns> </asp:GridView> </form> </body> </html> |
ну, вот еще весь класс бизнес-слоя: Код | using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Configuration; using System.Data.Linq.Mapping; using System.Data.Linq; using System.ComponentModel; using System.Data.SqlClient; using System.Data; //using System.Data.Linq.Provider;
namespace TestApp.ClasesDataSource { [Table(Name = "Users")] public class User { [Column(AutoSync = AutoSync.OnInsert, IsPrimaryKey = true, IsDbGenerated = true, CanBeNull = false)] public int UserId { get; set; } [Column] public string Name { get; set; } [Column] public string Login { get; set; } [Column] public string Password { get; set; } [Column] public string Email { get; set; } [Column] public string Phone { get; set; } }
public class UsersObjectDataSource { private static List<User> users_list;
public string GetConnection() { return ConfigurationManager.ConnectionStrings["TestDBConnectionString1"].ConnectionString; }
public List<User> SelectUsers() { DataContext db = new DataContext(GetConnection()); Table<User> Users = db.GetTable<User>();
users_list = new List<User>(); string all = string.Empty;
var sample = from u in Users select u; foreach (var user in sample) { users_list.Add(new User { UserId = user.UserId, Name = user.Name, Login = user.Login, Password = user.Password, Email = user.Email, Phone = user.Phone }); } return users_list;
}
public void UpdateUs er(User toUpdate) { DataContext db = new DataContext(GetConnection()); Table<User> Users = db.GetTable<User>(); var update_user = Users.Where(u => u.UserId == toUpdate.UserId).SingleOrDefault(); if (update_user != null) { update_user.Name = toUpdate.Name; update_user.Login = toUpdate.Login; update_user.Password = toUpdate.Password; update_user.Email = toUpdate.Email; update_user.Phone = toUpdate.Phone; db.SubmitChanges(); } }
public void InsertUs er(User toInsert) { DataContext db = new DataContext(GetConnection()); Table<User> Users = db.GetTable<User>(); User new_user = new Us er(); new_user.Name = toInsert.Name; new_user.Login = toInsert.Login; new_user.Password = toInsert.Password; new_user.Email = toInsert.Email; new_user.Phone = toInsert.Phone; Users.InsertOnSubmit(toInsert); db.SubmitChanges(); } [DataObjectMethod(DataObjectMethodType.Delete)] public void DeleteUs er(User toDelete) { DataContext db = new DataContext(GetConnection()); Table<User> Users = db.GetTable<User>(); User delete_user = Users.Where(u => u.UserId == toDelete.UserId).First(); Users.DeleteOnSubmit(delete_user); db.SubmitChanges(); }
} } |
Заранее спасибо!
|