ObjectDataSource - (2)

6311 단어 dataSource
지난 글 에서 Object DataSource 의 기본 적 인 사용 을 소개 했다. 이 절 은 이 컨트롤 의 사용 주 소 를 설명 했다. http://mqingqing123.cnblogs.com/archive/2006/04/06/368452.html - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 지난 글 에서 직원 들 의 정 보 를 얻 었 을 때 이런 말 을 한 적 이 있다.  위 에서 GetRecords () 의 정 의 를 내 릴 때 이 방법 이 되 돌아 오 는 유형 은 DataView 입 니 다. ObjectDataSource 는 앞으로 바 인 딩 컨트롤 의 데이터 원본 이 필요 하기 때문에 다음 과 같은 반환 유형 중 하나 가 필요 합 니 다. Ienumerable, DataTable, DataView, DataSet 또는 Object.   그러나 마이크로소프트 는 이렇게 하 는 것 을 추천 하지 않 는 다. ASP. NET 2.0 의 새로운 범 형 문법 이 여기 서 나타 나 고 업무 논리 적 패 키 징 을 잘 하기 위해 우 리 는 더욱 진일보 한 패 키 징 업무 논 리 를 통 해 강 한 유형 으로 돌아 갈 수 있 도록 해 야 한다. 직원 들 의 정 보 를 봉인 하고 App 에 배치 할 Employee. cs 파일 을 정의 할 수 있 습 니 다.다음 EmployeBLL. css 에서 이 종 류 를 공유 할 수 있 도록 코드 를 사용 합 니 다. Employee. cs 는 다음 과 같이 정의 합 니 다.
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 에 대해 서 는 코드 를 제시 하지 않 았 으 니 스스로 실현 하 세 요.
----------------------------------- 
  

좋은 웹페이지 즐겨찾기