Увод¶
У савременом друштву, базе података заузимају кључно место у свим областима људских делатности. Оне омогућавају систематично чување, управљање и брзу доступност великих количина података, што је предуслов за доношење информисаних одлука, повећање ефикасности процеса и побољшање квалитета услуга. У ери дигитализације и брзог технолошког развоја, важност база података стално расте, јер представљају основу за примену напредних технологија као што су вештачка интелигенција, машинско учење и анализа великих (количина) података (Big Data).
О базама података учио си доста у II и III разреду, у оквиру наставног предмета Базе података. Међутим, није реално очекивати да ће разни службеници, рачуновође, књиговође, административни радници и сви остали који користе базе података на свом радном месту научити како да користе системе за управљање базама података, нити језик SQL, како би дошли до података из базе. Задатак програмера је да креира софтвер прилагођен „обичном” кориснику, од кога је сакривена имплементација повезивања и рада са системом за управљање базама података.
У овом поглављу акценат ће бити управо на томе – креирање апликација које раде са базама података, конкретно са базама података у Microsoft SQL Server-у.
Како се повезује са базом података?¶
C# апликацију развијену у .NET Framework-у можеш повезати са базом података на више начина. На разним порталима наићи ћеш на дискусије које се баве питањем најбољег начина повезивања апликације са базом података. Углавном, свако има валидне аргументе за свој избор, традиционално кроз ADO.NET, „модерно” кроз Entity Framework, најједноставније користећи Dapper итд. Ту се јављају и LINQ to SQL застарели методи који се мање користе или ServiceStack OrmLite и NHibernate, који се користе у већим или специјализованим пројектима.
ADO.NET (System.Data.SqlClient) нуди „низак ниво” приступа бази података,
односно директно писање SQL упита. Предности ADO.NET-а су: потпуна контрола
над свим операцијама, најбоље перформансе јер нема посредника, минимално
меморијско оптерећење. Због свега тога може се рећи да је ADO.NET дуги низ година
стандард у .NET окружењу. Мане су вероватно очигледне: већа количина кода
за једноставне операције (бојлерплејт кôд), па самим тим и теже одржавање и
склоност грешкама.
Entity Framework је Object-Relational Mapper (ORM) који омогућава рад са базом података користећи .NET објекте без директног писања SQL кода. Предности у односу на ADO.NET су: много мање кода за основне операције (CRUD), лакше мењање шеме базе, лакше тестирање и модуларност и аутоматско мапирање података у објекте. Мане се огледају у томе да перформансе могу бити лошије за велике системе ако Entity Framework није пажљиво коришћен, као и да се може сакрити шта се тачно дешава на нивоу SQL упита. Такође, Entity Framework ради са ограничењима у .NET Framework-у - природно окружење му је .NET Core односно .NET 5 и новији.
Dapper представља микро-ORM библиотеку, односно баланс између чистог ADO.NET приступа и пуног ORM-а попут Entity Framework-а. Предности се огледају у томе да је Dapper веома брз — скоро као чисти ADO.NET, једноставан за учење и примену, да мапира резултате SQL упита директно у објекте без гломазног кода и да се добро комбинује са постојећим SQL упитима. Мане се огледају у томе да ипак ручно пишеш SQL упите, да је мање погодан за комплексне релације између табела и да нема богату функционалност као велики ORM-ови.
Ми ћемо користити искључиво традиционални начин, односно ADO.NET.