For Android device For iOS device
២៥
វិច្ឆិកា

​គ្រប់គ្រង​ទិន្នន័យ Database ដោយ C# +Dapper

 រៀបរៀងអត្ថបទដោយ លោក គឹម សូឡី នៅខែវិច្ឆិកា ឆ្នាំ ២០២២

♦ ដំបូងគួរ​ស្គាល់​អ្វីជា Dapper សិន!
Dapper អាចនិយាយបានថាវាជា tools សម្រាប់​ជួយដល់អ្នក​សរសេរ​កម្មវិធី .NET ឲ្យ​មានភាព​ងាយស្រួល​ក្នុង​ការ​គ្រប់គ្រង​ទិន្នន័យ Database តាមបែប Object Relational Mapping (ORM) ។ Dapper អាច​ប្រើ​បានជាមួយ Database ជា​ច្រើន​ប្រភេទ​ដែល​ភ្ជាប់​មកជាមួយ Data Providers របស់វា ក្នុង​នោះមាន​ដូចជា​៖ Microsoft Access, Microsoft SQL Server, Oracle, SQLite, PostgreSQL និង​ដទៃ​ទៀត ។
គោល​បំណង​នៃការ​ប្រើ​ប្រាស់ Dapper គឺជួយ​សម្រួល​ការ​សរសេរ​កូដ​ឲ្យ​រហ័ស​ជាងមុន និងមានប្រ​សិទ្ធ​ភាព​ជាងមុន ។
មុននឹងអានបន្តទៀត សម្មតថាអ្នក​ធ្លាប់​មានបទពិសោធន៍ជាមួយការ​សរសេរ​កូដ .NET ផ្សេងៗ​ជាមួយនឹង​ទិន្នន័យ Database ខ្លះ​ៗ​ហើយ​ដូចជា ADO.NET ជាដើម ។
​បញ្ជាក់​៖ យើងនឹង​ប្រើ​ប្រាស់ .NET 4.5 + Console application + Dapper +Microsoft SQL Server ក្នុង​អត្ថបទ នេះនឹងនាំអ្នក​ឲ្យ​យល់ពីការ​ប្រើ​ប្រាស់​ដូច​ខាងក្រោម​៖
- ទាញយក​ទិន្នន័យ​ពី database ដោយ​ផ្ដល់​មកវិញជា​តម្លៃ​ទោល -Dapper Execute Scalar
- ទាញយក​ទិន្នន័យ​ពី database ដោយ​ផ្ដល់​មកវិញជាសំណុំ​ទិន្នន័យ -Dapper Query
- កែប្រែ​ទិន្នន័យ លុប​ទិន្នន័យ និងការ​បញ្ចូល​ទិន្នន័យ -CRUD Dapper Execute
- ការ​ប្រើ​ប្រាស់​ប៉ារ៉ាមែតផ្សេងៗ​របស់ Dapper -Dapper Parameterized Query
- ទាញយក​ទិន្នន័យ​ច្រើន​សំណុំ​ក្នុង query តែមួយ -Dapper Multiple Result
- អនុវត្តន៍ប្រតិបត្តិការ​ច្រើន​ក្នុង​ពេលតែមួយ - Dapper Transaction
​បញ្ចូល​ទិន្នន័យ​ច្រើន​ជាសំណុំ -Dapper BulkInsert
១. យើងនឹង​ប្រើ​ប្រាស់ Microsoft SQL Server សម្រាប់​ជាឧទាហរណ៍ និងមាន Table ដូច​ខាងក្រោម​៖

២. ចាំបាច់ត្រូវ​ទាញយក Dapper ពី NuGet Library ទៅកាន់ Project របស់យើងសិន
​សម្រាប់ Microsoft Visual Studio សូមចូល​ទៅកាន់ Tools>NuGet Package Manager>Package Manager Console
រួច​ប្រើ Command : PM> install-package Dapper [-Version ...]
ឧទាហរណ៍ : PM> Install-Package Dapper -Version 1.50.0 (Project កំពុង​ប្រើ​ប្រាស់ .NET 4.5)
ឬ​ប្រើ​ប្រាស់ wizard ដោយ Right click លើ​ឈ្មោះ Project> Manage NuGet Packages… រួច​ស្វែងរក​ពាក្យ Dapper និង​ជ្រើសរើស Version ណាមួយ​ដែល​ត្រូវនឹង Project នោះ ឧទាហរណ៍​ដូចជា .NET4, .NET4.5, .NET Core, .NET5, ឬ .NET6 ជាដើម ។
​បន្ទាប់ពី​ទាញយក Dapper រួចរាល់ យើងនឹងអនុវត្តអំពីការ​ប្រើ​ប្រាស់​ដូចតទៅ៖

s ​ទាញយក​ទិន្នន័យ​ពី database ដោយ​ផ្ដល់​មកវិញជាសំណុំ​ទិន្នន័យ -Dapper Query

ដើម្បី​ទទួលបាន​ទិន្នន័យ​ជាសំណុំ (IEnumerable) ជា​ទូទៅ​យើងត្រូវ​បង្កើត Model Class សម្រាប់​តំណាង​ឲ្យ​ទិន្នន័យ​ដែល​ត្រូវ​ទាញយក​ពី Database ដែល​ពេលនោះ​វានឹង​ធ្វើការ​ផ្គូរផ្គងរវៀង SQL Select Statement ទៅនឹង Object របស់ Model class នោះ ។ គួរ​រម្លឹក​ឡើងវិញថា នេះជាវិធីសាស្រ្ត Object Mapping របស់ Dapper ហើយយើង​ក៏​អាច​ប្រើ​វាតាមបែប Dynamic Query ដោយមិនចាំបាច់មាន Model Class ក៏​បានដែរ ។ សូមមើលឧទាហរណ៍ ៖

កូដ​ខាងក្រោម​នេះបាន​ប្រើ​ប្រាស់​ប្រភេទ​ទិន្នន័យ​ជា dynamic ជំនួស​ឲ្យ​ការ​បង្កើត Model class

s កែប្រែ​ទិន្នន័យ លុប​ទិន្នន័យ និងការ​បញ្ចូល​ទិន្នន័យ​ -Dapper Execute

s ការ​ប្រើ​ប្រាស់​ប៉ារ៉ាមែតផ្សេងៗ​របស់ Dapper

តាមឧទាហរណ៍​ដែល​បាន​បង្ហាញ​កន្លងមក
db.Execute ("Insert Into tbl_Item (ItemID,ItemName) Values (1, 'Wallet') ") ;
យើងឃើញថា​តម្លៃ​ដែល​បោះ​ទៅកាន់ field នីមួយៗ​របស់ Table គឺបោះដោយ​ផ្ទាល់​មិន​តាមរយៈ Parameter ឡើយ ។ ឧទាហរណ៍ថាបើ​តម្លៃ​ដែល​ត្រូវ​បញ្ចូល​នោះមានផ្ទុក​នូវ​សញ្ញា​ពិសេស​ណាមួយ (Special character) នោះ SQL Syntax នឹងមិន​ដំណើរ​ការ​ឡើយ

@ID និង @Name ជា parameter ចំណែក​ឯ new {ID, Name} គឺជា argument ត្រូវនាំ​តម្លៃ​ទៅកាន់ Parameter នីមួយៗ ដែល​បាន​កំណត់​នៅ​ក្នុង SQL Statement ។
ឧទាហរណ៍​ផ្សេងទៀត​៖

Dynamic Parameter

Dapper អាច​ឲ្យ​យើង​ប្រើ​ប្រាស់ parameter ដោយមាន​លក្ខណៈ​ជា dynamic បាន ។ នៅ​ក្នុង​ការធ្វើ Project ជាក់ស្តែងវាពិតជាមាន​សារៈ​សំខាន់​ណាស់​សម្រាប់​បត់បែនលក្ខខណ្ឌ​របស់អ្នក​ប្រើ​ប្រាស់​ពេលទាញ​ទិន្នន័យ​ធ្វើ​របាយការណ៍ ។ សូមមើលឧទាហរណ៍​ខាងក្រោម​៖

♦ ​ទាញយក​ទិន្នន័យ​ច្រើន​សំណុំ​ក្នុង Query តែមួយ -Dapper Multiple Result

ករណី​ខ្លះ​យើង​ក៏​អាច​ទាញយក​ទិន្នន័យ​ចេញពី table ផ្សេងៗ​ក្នុង​ពេលតែ១ ដោយ​ផ្ដល់​មកវិញជាសំណុំនៃសំណុំ ។

(បញ្ជាក់​៖ សូម​បង្កើត table tbl_purchase និង Model class Purchase ​បន្ថែម​តាមជាក់ស្តែង)

 អនុវត្តប្រតិបត្តិការ​ច្រើន​ក្នុង​ពេលតែមួយ - Dapper Transaction

Transaction ជាអ្វី​ដែល​យើងត្រូវតែដឹងមិនថា​ប្រើ​នៅ​ក្នុង ADO.NET ឬ Dapper នោះទេ គឹ​ប្រើ​នៅពេល​ត្រូវអនុវត្ត command ច្រើន​ក្នុង​ពេលតែមួយដោយប្រាកដថា command ទាំងអស់​នោះមិនមានមួយណាerror ដែល​នាំ​ឲ្យ​ទិន្នន័យ​ខុសប្រក្រតី សូមមើលឧទាហរណ៍​ខាងក្រោម​៖

(បញ្ជាក់​៖ សូម​បង្កើត table tbl_activity_log ​បន្ថែម​តាមជាក់ស្តែង)

 

Commands ទាំងពីរ​ដែល​បានអនុវត្តនៅ​ក្នុង​ប្លុក try {} ត្រូវបាន​គ្រប់គ្រង​ដោយ transaction object តែមួយ ដូច្នេះបើមាន command មួយណា error នោះ

Transaction ទាំងមូល​នឹងច្រានចោល command ទាំងអស់​នោះដោយមិនប៉ះពាល់ដល់ database ឡើយ ។

♦ ​បញ្ចូល​ទិន្នន័យ​ច្រើន​ជាសំណុំ -Dapper BulkInsert

BulkInsert ជាវិធីសាស្រ្ត​បញ្ចូល​ទិន្នន័យ​ទៅ​ក្នុង Database ​ក្នុង​ករណីយើងមាន​ទិន្នន័យ​ច្រើន record ដោយអនុវត្តតែមួយដង ពោលគឺមិនចាំ​ប្រើ loop ​ឲ្យ​ធ្វើការ​ច្រើន​ដងនោះឡើយ ។  

♦ សង្ខេប

· គោល​បំណង​នៃការ​ប្រើ​ប្រាស់ Dapper គឺជួយ​សម្រួល​ការ​សរសេរ​កូដ​ឲ្យ​រហ័ស​ជាងមុន និងមានប្រ​សិទ្ធ​ភាព​ដំណើរ​ការ​ជាងមុន ។

· Dapper អាច​ប្រើ​បានជាមួយ database ​ច្រើន​ប្រភេទ​ដោយពឹងផ្អែក​ទៅលើ​ IDbConnection ដើម្បី​ធ្វើការ​ជាមួយនឹង Data Provider របស់ Database នោះ ។

· Dapper ជា Open source Library Package ​ដែល​អាច​ទាញយក​ដោយសេរីពី NuGet Library

· Multi-Query Support

· BulkInsert Support

· Dapper អាចទាញ​ទិន្នន័យ​មកផ្ទុកបានទាំង​ប្រភេទ​ទិន្នន័យ​ធម្មតា និង​ប្រភេទ​ទិន្នន័យ​ដែល​មានភាពស្មុគ្រស្មាញ ។

· Dapper ជា ORM ដ៏ល្អមួយ​ក្នុង​ចំណោម ORM ជា​ច្រើន​ទៀត ហើយយើង​ក៏​អាច​ប្រើ​ប្រាស់​វិធីសាស្រ្តផ្សេងៗ​បញ្ចូល​គ្នា​អាស្រ័យ​លើភាពបត់បែនរបស់យើងជា Programmer ផងដែរ ៕

មតិ និង​យោបល់​ទៅលើ​អត្ថបទ​នេះ (តាម Facebook)

ខាងក្រោម​នេះ​ជា​យោបល់​ផ្សេងៗ​របស់​អ្នកទស្សនា