ObjectDataSource - (2)
6311 단어 dataSource
using System;
public class Employee
{
protected int _EmployeeId;
protected string _LastName;
protected int _Firstname;
protected int _Title;
protected string _Region;
protected decimal _PostalCode;
public int EmployeeId
{ get { return _EmployeeId; } set { _EmployeeId= value; } }
public string LastName
{ get { return _LastName; } set { _LastName= value; } }
public int Firstname
{ get { return _Firstname; } set { _Firstname= value; } }
public int Title
{ get { return _Title; } set { _Title= value; } }
public string Region
{ get { return _Region; } set { _Region= value; } }
public decimal PostalCode
{ get { return _PostalCode; } set { _PostalCode= value; } }
public Employee() { _Employee= -1; }
public Employee(int employeeID, string lastName, string firstName,string region,decimal postalCode)
{
this._EmployeeID= employeeID;
this.Lastname=lastName;
this.FirstName=firstName;
this.Region=region;
this.postalCode=PostalCode;
}
이 코드 는 특별한 것 이 없습니다. Employee 클래스 에 필드 를 설치 하여 get / set 접근 기 를 사용 하여 속성 으로 정의 합 니 다. 나중에 Employee 1. LastName, Employee 1. First Name 을 통 해 접근 할 수 있 습 니 다.다음은 자신의 업무 논리 코드, EmployeBLL. cs 파일 을 만 들 고 App 에 배치 할 수 있 습 니 다.COde 폴 더 에서 간소화 하기 위해 선택 과 편집 소스 코드 만 제 시 했 습 니 다. 삭제, 삽입 은 쉽게 쓸 수 있 습 니 다.:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Configuration;
using System.Data;
using System.Data.Common;
using System.Data.SqlClient;
using System.Web;
public class EmployeeBLL
{
public List<Employee> LoadAll()
{
// Employees
List<Employee> Employees = new List<Employee>();
// web.config , ASP.NET1.1 , ConfigurationManager
SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["Northwind"].ConnectionString);
SqlCommand command = new SqlCommand("SELECT * FROM Employees", conn);
conn.Open();
SqlDataReader dr = command.ExecuteReader();
while (dr.Read())
{
//
Employee prod =new Employee();
prod.EmployeeID = (int)dr["EmployeeID"];
prod.EmployeeName = (string)dr["FistName"];
prod.SupplierID = (int)dr["LastID"];
... ...
// Employees
Employees.Add(prod);
}
dr.Close();
conn.Close();
return Employees;
}
이 코드 에서 코드 가 Employee 의 강 한 유형 으로 돌아 가 는 것 을 볼 수 있 습 니 다. 업무 논리 패 키 징 이 가 져 온 편리 함 을 느끼 지 못 했 을 수도 있 습 니 다. 다음은 사용자 의 코드 를 편집 하 는 것 입 니 다. 다음 과 같 습 니 다.
지난 절 에 말씀 드 렸 듯 이 SQL 을 통 해 8 개의 필드 를 가 져 옵 니 다. 모든 업데이트 방법 은 8 개의 인자 가 필요 합 니 다.마찬가지 로 범 형 을 사용 할 때 LoadAll 은 Employee 형식 으로 되 돌아 오기 때문에 모든 것 을 업데이트 할 때
Employee 인자 가 필요 합 니 다.
public static void Edit(Employee prod)
{
SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["Northwind"].ConnectionString);
SqlCommand command = new SqlCommand("UPDATE Employees SET LastName=@LastName, FirstName=@FirstName,... ...", conn);
command.Parameters.Add(new SqlParameter("@LastName", prod.Last));
command.Parameters.Add(new SqlParameter("@FistName",prod.FirstName));
command.Parameters.Add(new SqlParameter("@CategoryID", prod.CategoryID));
... ...
conn.Open();
command.ExecuteNonQuery();
conn.Close();
}
이 때 사용자 자료 편집 에 필요 한 매개 변 수 는 Employee 형식 매개 변수 임 을 알 수 있 습 니 다. 그러면 상층 업무 에 있어 주로 Employee 인 자 를 전달 하면 됩 니 다. 다른 것 은 처리 할 필요 가 없습니다. 물론 원 하신 다 면 구체 적 으로 업 데 이 트 된 인 자 를 공개 할 수 있 습 니 다. 다음 과 같 습 니 다.
public static void Edit(int employeeID,string firstName,string lastName,string title,string Region,decimal postal)
{
}
이러한 방법 은 상부 에서 인용 할 때 데이터베이스 디자인 구 조 를 추측 할 수 있 습 니 다. 예 를 들 어 EmployeID 열, First Name 등 을 포함 하 는 것 을 쉽게 알 수 있 고 Edit (Employee prod) 를 사용 하면 알 수 없습니다. 이것 도 포장 의 장점 입 니 다. 마지막 으로 이렇게 하면 논리 코드 를 참조 하여 ObjectDataSource 컨트롤 을 사용 합 니 다.
<asp:ObjectDataSource ID="BllObjectDataSource" runat="server"
SelectMethod="LoadAll"
TypeName="EmployeeBLL"
DataObjectTypeName="Employee"
DeleteMethod="Delete" UpdateMethod="Edit"
>
</asp:ObjectDataSource>
주의: DataObjectTypeName 이 강 한 종 류 를 가리 키 는 것 을 설정 해 야 합 니 다.deleteMethod 와 UpdateMethod 에 대해 서 는 코드 를 제시 하지 않 았 으 니 스스로 실현 하 세 요.
-----------------------------------