티스토리 뷰

DAAB(Data Access Application Block) in Enterprise Library 2.0 - (6회)
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
 
사용자 삽입 이미지
키워드
Enterprise Library 2.0 Data Access Application Block
사용자 삽입 이미지
난이도
중급
사용자 삽입 이미지
작성일
2006-04-09 오후 10:15:29
사용자 삽입 이미지
조회수
1233회
사용자 삽입 이미지
평가점수
5.00
사용자 삽입 이미지
(1명 평가 평균)
사용자 삽입 이미지
첨부파일
(파일없음)
사용자 삽입 이미지
요약설명
DAAB(Data Access Application Block) in Enterprise Library for .NET 2.0은 DAC(Data Access Component) 레이어에서의 반복적인 ADO.NET 코딩량을 감소시켜주며 DB 커넥션 관리와 같은 사용자가 실수하기 쉬운 부분을 관리해주는 DAAB(Data Access Application Block)이 Enterprise Library에 통합된 버전이다. 또한 Enterprise Library 1.x에 있던 DAAB를 ADO.NET 2.0의 변화된 기능에 맞게 수정한 것이 DAAB(Data Access Application Block) in Enterprise Library for .NET 2.0이다.
사용자 삽입 이미지


사용자 삽입 이미지
 wooys
 
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지

[DataSet사용하여DB업데이트하기(UpdateDataSet사용)]

[DAABUpdateDataSet메서드를사용하여DataSet변경된내용을DB반영시키는내용을아래예제에서설명하고있다.

 

아래예제를실행하기위해서는해당Stored Procedure만들어져있어야한다.

CREATE PROCEDURE AddProduct

(

   @ProductName nvarchar(50),

   @CategoryID int,

   @UnitPrice money

)

AS

 

INSERT INTO Products (ProductName, CategoryID, UnitPrice)

VALUES (@ProductName, @CategoryID, @UnitPrice)

 

SELECT ProductID, ProductName, CategoryID, UnitPrice

FROM Products

WHERE ProductID = SCOPE_IDENTITY()

GO

 

CREATE PROCEDURE DeleteProduct

(

   @ProductID int

)

AS

 

DELETE Products

WHERE ProductID = @ProductID

GO

 

CREATE PROCEDURE UpdateProduct

(

   @ProductID int,

   @ProductName nvarchar(50),

   @LastUpdate datetime

)

AS

 

UPDATE Products

SET ProductName = @ProductName

WHERE ProductID = @ProductID AND LastUpdate = @LastUpdate

 

IF @@ROWCOUNT > 0

 -- This statement is used to update the DataSet if changes are done on the updated record (identities, timestamps or triggers )

 SELECT ProductID, ProductName, CategoryID, UnitPrice

 FROM Products

 WHERE ProductID = @ProductID

GO

 

 

사용 예제1 - C#)

 

Database db = DatabaseFactory.CreateDatabase();

 

DataSet productsDataSet = new DataSet();

 

string sqlCommand = "Select Select ProductID, ProductName, CategoryID, UnitPrice, LastUpdate From Products";

DbCommand dbCommand = db.GetSqlStringCommand(sqlCommand);

 

string productsTable = "Products";

 

// Retrieve the initial data.

db.LoadDataSet(dbCommand, productsDataSet, productsTable);

 

// Get the table that will be modified.

DataTable table = productsDataSet.Tables[productsTable];

 

// Add a new product to existing DataSet.

DataRow addedRow = table.Rows.Add(new object[] {DBNull.Value, "New product", 11, 25});

   

// Modify an existing product.

table.Rows[0]["ProductName"] = "Modified product";

 

// Establish the Insert, Delete, and Update commands.

DbCommand insertCommand = db.GetStoredProcCommand("AddProduct");

db.AddInParameter(insertCommand, "ProductName", DbType.String, "ProductName", DataRowVersion.Current);

db.AddInParameter(insertCommand, "CategoryID", DbType.Int32, "CategoryID", DataRowVersion.Current);

db.AddInParameter(insertCommand, "UnitPrice", DbType.Currency, "UnitPrice", DataRowVersion.Current);

 

DbCommand deleteCommand = db.GetStoredProcCommand("DeleteProduct");

db.AddInParameter(deleteCommand , "ProductID", DbType.Int32, "ProductID", DataRowVersion.Current);

 

DbCommand updateCommand = db.GetStoredProcCommand("UpdateProduct");

db.AddInParameter(updateCommand, "ProductID", DbType.Int32, "ProductID", DataRowVersion.Current);

db.AddInParameter(updateCommand, "ProductName", DbType.String, "ProductName", DataRowVersion.Current);

db.AddInParameter(updateCommand, "LastUpdate", DbType.DateTime, "LastUpdate", DataRowVersion.Current);

 

// Submit the DataSet, capturing the number of rows that were affected.

int rowsAffected = db.UpdateDataSet(productsDataSet, "Products", insertCommand, updateCommand, deleteCommand, Microsoft.Practices.EnterpriseLibrary.Data.UpdateBehavior.Standard);

 

UpdateDataSet메서드는업데이트작업중에러가발생하였을경우어떤식으로처리하는지를지정할있다. UpdateBehavior통해설정할있는UpdateBehavior.Standard에러발생시롤백도하지않고이상업데이트도수행하지않고상황에서멈춘다.

UpdateBehavior.Continue나머지업데이트를하려고시도한다.

UpdateBehavior.Transactional에러가발생했을경우전체를롤백시킨다.]

 

[Instrumenting DAAB]

[아래와같이구성정보파일내의configSections지정한섹션(아래예에서는instrumentationConfiguration섹션)퍼포먼스카운터,이벤트로깅, WMI등의InstrumentingEnable/Disable있다.

<?xml version="1.0" encoding="utf-8" ?>

<configuration>

     <configSections>

        <section name="instrumentationConfiguration"type="Microsoft.Practices.EnterpriseLibrary.Common.Instrumentation.Configuration.InstrumentationConfigurationSection, Microsoft.Practices.EnterpriseLibrary.Common, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null" />

      </configSections>

  <instrumentationConfigurationperformanceCountersEnabled="true"eventLoggingEnabled="true"wmiEnabled="true" />

</configuration>

 

Instrumenting대한자세한내용은Enterprise Library도움말내DAAB부분을참고하기바란다.

(ms-help://MS.VSCC.v80/MS.VSIPCC.v80/ms.EntLib.2006Jan/EnterpriseLibrary/html/03-05-030-Instrumenting%20the%20Data%20Access%20Application%20Block.htm)

]

 

출처 :http://www.gosu.net