Search
Search titles only
By:
Search titles only
By:
Log in
Register
Search
Search titles only
By:
Search titles only
By:
Menu
Install the app
Install
Forums
New posts
All threads
Latest threads
New posts
Trending threads
Trending
Search forums
What's new
New posts
New ads
New profile posts
Latest activity
Free Ads
Latest reviews
Search ads
Members
Current visitors
New profile posts
Search profile posts
Contact us
Latest ads
Colombo
Kaduwela - Two Storey House for Sale
dilrasan
Updated:
Thursday at 2:23 PM
Ad icon
Wechat qr verification
Pawan2005
Updated:
Thursday at 1:28 AM
🚀 GOOGLE AI PRO 18 MONTHS ACTIVATION 🚀
sayuru bandara
Updated:
Wednesday at 5:34 PM
Pure VPN - Up to 27 Months
vgp
Updated:
Jun 5, 2026
එක පැකේජ් එකයි මාසෙටම Unlimited Internet. තාමත් DATA CARD දාන්න සල්ලි වියදම් කරනවද? අඩුම මිලට අපෙන්.
sayuru bandara
Updated:
Jun 2, 2026
Electronics
Vehicles
Property
Search
Reply to thread
Forums
General
Education
.Net Web APi/Angular 6 - Lesson 1
Get the App
JavaScript is disabled. For a better experience, please enable JavaScript in your browser before proceeding.
You are using an out of date browser. It may not display this or other websites correctly.
You should upgrade or use an
alternative browser
.
Message
<blockquote data-quote="HAneo" data-source="post: 23241167" data-attributes="member: 17432"><p><span style="font-size: 18px"><span style="color: Red">සෝස් කෝඩ් එක සහ නොට් එකට මේකෙන් යන්න පුළුවන් </span></span></p><p><span style="font-size: 18px"><span style="color: Red">[CODE]</span></span></p><p><span style="font-size: 18px"><span style="color: Red">[URL="http://www.elakiri.com/forum/showthread.php?p=23242975#post23242975"]http://www.elakiri.com/forum/showthread.php?p=23242975#post23242975[/URL]</span></span></p><p><span style="font-size: 18px"><span style="color: Red">[/CODE]</span></span></p><p></p><p><span style="font-size: 18px"><span style="color: Black">ගුනේගේ කේක් කඩේ නොහොත් Project "Gune"</span></span></p><p></p><p><span style="color: green"><span style="font-size: 15px">ඔන්න එහෙනම් කිව්ව විදිහටම වැඩේ පටන් ගත්තා. උබලට මේක ටිකක් වෙනස් විදිහට පෙනෙයි. මොකද මේක කියල දෙන්නේ බාබා ලන්තේ ඉන්න උන්ට නෙමේ හින්දා මගේ ගුරා මට කියලා දුන්නා විදිහට. ඒ කියන්නේ තල්ලු කරලා පීනන්න කියන තියරි එකට</span></span></p><p><span style="color: green"><span style="font-size: 15px"></span></span></p><p><span style="color: green"><span style="font-size: 15px"></span></span></p><p><span style="color: green"><span style="font-size: 15px">ඔන්න උබලගේ පැත්තේ කඩයක් තියනවා. උ හදන්නේ ස්පොන්ජ් කේක්. මේකේ ස්පොන්ජ් කේක් වර්ග ගොඩක් තියනවා.මේ යකා එහෙම නිකන් ආවාට ගියාට කේක් දෙන්නේ නැ. පොර ඔර්ඩර් වලට විතරයි දෙන්නේ. උගේ කේක් ම කන සෙට් එකක් ඉන්නවා. ඉතින් ඔර්ඩර් වලට තමා කේක් හදන්නේ.</span></span></p><p><span style="color: green"><span style="font-size: 15px"></span></span></p><p><span style="color: green"><span style="font-size: 15px">මේ පොරට ඕනේ කස්ටමර් ලට වෙබ් එකෙන් කේක් ඔර්ඩර් කරන්න. උ සැහෙන්න රට යන එකෙක් ඒ නිසා වෙබ් එකෙන් තමා උ හුගක් දේවල් කරගන්නේ. </span></span></p><p><span style="color: green"><span style="font-size: 15px"></span></span></p><p><span style="color: green"><span style="font-size: 15px">වැදගත්ම දේ මේ පොර උබේ ලගට එනවා මේකට හරියන මොකක් හරි මගුලක් කරලා දීපන් කියලා. උ නං කියයි මගුල කියලා. දැන් අපි මොකද කරන්නේ? දැන් ඉතින් උබලගේ දිග්ගිරි එක ගත්ත කැම්පස් එක මතක් කරගෙන මේකට විසදුමක් දෙන්න ඕනේ. </span></span></p><p><span style="color: green"><span style="font-size: 15px"></span></span></p><p><span style="color: green"><span style="font-size: 15px">“හරි ලොක්කා වැඩේ කරමු. මේකට වෙබ් එකෙන් නිකන් වෙබ් සයිට් එකක් වගේ එකක් කරමු. හැබැයි මේක වෙබ් සයිට් එකක්ම නෙමේ පොඩි සොෆ්ට්වයර් එකක් වගේ එකක්.”</span></span></p><p><span style="color: green"><span style="font-size: 15px"></span></span></p><p><span style="color: green"><span style="font-size: 15px">“උබ කියනවනම් ඕනේ එකක්. මේ රට ගියාම සෙල් එක එහෙම බලාගන්න පුලුවන්ද? ඒ වගේම ච්කස්ටමර් ලට ෆීඩ් බැක් එකක් ප්රමෝෂන් එකක් වගේ කරන්න පුළුවන් වෙයි නේද?”</span></span></p><p><span style="color: green"><span style="font-size: 15px"></span></span></p><p><span style="color: green"><span style="font-size: 15px">“ඔව් පුළුවන්. හැබැයි මේකෙන් රෙදි සෝදන්න පාරට තාර දන්නා වගේ හැම දේම ඉල්ලන්න එපා යකෝ. මුලින් උබට මම කස්ටමර් ට ඔර්ඩර් කරන ටික හදලා දෙන්නම්. පස්සේ මේක ටික ටික ලොකු කරගමු”.</span></span></p><p></p><p><span style="font-size: 18px"><strong>රෙදි නැතිව පිනිම - Identify Objects </strong></span></p><p></p><p><span style="font-size: 15px"><span style="color: Green">කස්ටමර් ට ඕනේ දේ දැන් උබලා දන්නවනේ. ඕකෙන් කියන ඔක්කොම නාම පද ඔබ්ජෙක්ට් එකක් එහෙම නැත්නම් ක්ලාස් එකක් වෙනවා.</span></span></p><p><span style="font-size: 15px"><span style="color: Green"></span></span></p><p><span style="font-size: 15px"><span style="color: Green">“උබලගේ පැත්තේ කඩයක් තියනවා” – Company</span></span></p><p><span style="font-size: 15px"><span style="color: Green">“හදන්නේ ස්පොන්ජ් කේක්” – Products</span></span></p><p><span style="font-size: 15px"><span style="color: Green">“පොර ඔර්ඩර් වලට විතරයි දෙන්නේ” - “Orders”</span></span></p><p><span style="font-size: 15px"><span style="color: Green">“මේ පොරට ඕනේ කස්ටමර් ලට..” - Customers</span></span></p><p><span style="font-size: 15px"><span style="color: Green"></span></span></p><p><span style="font-size: 15px"><span style="color: Green"></span></span></p><p><span style="font-size: 15px"><span style="color: Green"></span></span></p><p><span style="font-size: 15px"><span style="color: Green">දැන් උබලා කැමති විදිහකට මේක ඩිසයින් කරගන්න පුළුවන්. ඕනේ diagram එකක් ඇදගන්න පුළුවන්. උදව්වක් ඕනේ නම් දෙන්නම් . කරලා පෙන්නන. මේක තමා සිම්පල් ම ක්රමේ.</span></span></p><p><span style="font-size: 15px"><span style="color: Green"></span></span></p><p></p><p><span style="font-size: 18px">Service Oriented Architecture </span></p><p></p><p><img src="http://oi63.tinypic.com/rbjh3t.jpg" alt="" class="fr-fic fr-dii fr-draggable " style="" /></p><p></p><p><span style="font-size: 15px"><span style="color: green">මේ වැඩේ කරනකොට තියන ප්රදානම දෙයක් තමා වෙබ් එකේ වෙන්න ඕනේ. ඉතින් මේකට ඕනෙම වෙබ් technology එකක් පාවිච්චි කරන්න පුළුවන්. අපි බලන්නේ මේක SOA විදිහට කරන්නේ කොහොමද කියලා.</span></span></p><p><span style="font-size: 15px"><span style="color: green"></span></span></p><p><span style="font-size: 15px"><span style="color: green">පෙර කාලේ ඒ කියන්නේ අපි ඉගෙන ගන්න කාලේ තිබ්බේ Client Server architecture එක . ඒ කියන්නේ සර්වර් එකක් තියනවා. එකට සම්බන්ද උන කම්පුටර් වල ඉදන් අරකේ තියන database එක පාවිච්චි කරලා වැඩ කරනවා. මේක ඉතින් ඉන්න තැන ඉදන් විතරයි කරන්න පුළුවන්. සැහෙන පාඩු තියනවා .පස්සේ කලෙත් එක්ක එක්ක මේක වෙනස් උනා. ඒ කියන්නේ මේක කැඩුවා layer කීපයකට. එකට කිව්වේ 3-Tire architecture කියලා</span></span></p><p><span style="font-size: 15px"><span style="color: green"></span></span></p><p><span style="font-size: 15px"><span style="color: green">1. Data Access layer</span></span></p><p><span style="font-size: 15px"><span style="color: green">2. Business Logic layer</span></span></p><p><span style="font-size: 15px"><span style="color: green">3. UI layer</span></span></p><p><span style="font-size: 15px"><span style="color: green"></span></span></p><p><span style="font-size: 15px"><span style="color: green">මේ 3-Tire architecture සැහෙන්න පාවිච්චි උනා . ඒ වෙබ් එක දියුණු වෙනකන් විතරයි. වෙබ් එකේ දියුණුවත් එක්ක කට්ටියට ඕනේ උනා මේකේ Database එක වෙනම තැනක තියාගන්න. BL එක වෙනම තැනක. UI එක වෙනම තැනක තියාගන්න. ඉතින් එකට අපු විසදුම තමා මේ SOA </span></span></p><p><span style="font-size: 15px"><span style="color: green"></span></span></p><p><span style="font-size: 15px"><span style="color: green">මේකේ පලවෙනි එක තමා Detabase එක . එක ගැන වැඩිය කියන්න ඕනේ නැති නිසා කියන්නේ නැ. එත් පරණ SQL වලට වඩා අලුත් Versions මේ SOA වලට හුගක් උදව් කරනවා . </span></span></p><p><span style="font-size: 15px"><span style="color: green"></span></span></p><p></p><p><span style="font-size: 18px">Data Access Layer</span></p><p></p><p></p><p><span style="font-size: 15px"><span style="color: green">අනේ ඉතිං පරණ ADO.Net වලට පින් සිද්ද වෙන්න ඉස්සර අපි Database එකේ ඉදන් ඩේට එහෙ මෙහෙ කරගත්තා. එත් ඒ කරපු උන්දැලා දන්නවනේ එකේ තියන අමාරුව. Custom Library ගහගෙන වැඩ කරන්න ඕනේ. </span></span></p><p><span style="font-size: 15px"><span style="color: green"></span></span></p><p><span style="font-size: 15px"><span style="color: green">ඔය යටි බඩේ මෙන්සස් අමාරුව තේරුම් ගත්ත පින්වත්තු සෙට් එකක් හැදුවා Entity Framework කියලා එකක්. එකෙන් වෙන්නේ සරලවම SQL Data Table එකක් අපේ ප්රෝග්රෑම් එකේ Object වලට හරවලා දෙනවා. මේකෙදි </span></span></p><p></p><p><span style="font-size: 12px"><span style="color: Magenta">1 row of a table = 1 object of curesponding Class </span></span></p><p></p><p><span style="color: Green"><span style="font-size: 15px">හිතන්න customer table එකේ තියනවා එක row එකක්. </span></span></p><p><span style="color: Green"><span style="font-size: 15px">-------------------------------</span></span></p><p><span style="color: Green"><span style="font-size: 15px">Customer Name | Age</span></span></p><p><span style="color: Green"><span style="font-size: 15px">-------------------------------</span></span></p><p><span style="color: Green"><span style="font-size: 15px">Haneo | 21</span></span></p><p><span style="color: Green"><span style="font-size: 15px">-------------------------------</span></span></p><p><span style="color: Green"><span style="font-size: 15px">EF වලින් මේක අපිට Customer object එකක් විදිහට හදලා දෙනවා. </span></span></p><p><span style="color: Green"><span style="font-size: 15px">ඉස්සර ඉක පුරාගෙන කරපු දේවල් දැන් එක ලයින් එකෙන් කරගන්න පුළුවන්.</span></span></p><p><span style="color: Green"><span style="font-size: 15px"></span></span></p><p><span style="color: Green"><span style="font-size: 15px"></span></span></p><p><span style="color: Green"><span style="font-size: 15px"></span></span></p><p></p><p><img src="http://oi65.tinypic.com/16c483s.jpg" alt="" class="fr-fic fr-dii fr-draggable " style="" /></p><p></p><p><span style="color: Magenta"><span style="font-size: 12px">Dapper කියන එකත් මේ වගේම එකක්. මේ දෙකේ වෙනස් කම් තියනවා. අපි ඒවා පස්සේ කතා කරනවා.</span></span></p><p></p><p></p><p><span style="font-size: 18px">Business Logic</span></p><p></p><p><span style="font-size: 15px"><span style="color: Green">ඉස්සර මේකෙදි කලේ අර Analysis කරලා Design කල දේවල් ටික Functional Methods ටිකක් විධිහට ගහගන්න එක. දැන් එහෙම නෙමේ. </span></span></p><p><span style="font-size: 15px"><span style="color: Green"></span></span></p><p><span style="font-size: 15px"><span style="color: Green">දැන් අපි කරන්නේ එකට එකක් සම්බන්ද වෙන Function එකම තැනකින් දෙන එක. මේ ක්රමේදී තියන වාසිය තමා වෙන වෙන දේවල් වලට වෙන වෙනම functions අවශ්ය නොවීම. හැම දේට එකම තැනකින් කරගන්න පුළුවන් කම.</span></span></p><p><span style="font-size: 15px"><span style="color: Green"></span></span></p><p><span style="font-size: 15px"><span style="color: Green">මේක තේරෙන්නේ නැනේ මෙහෙම කියන්නම්. අපේ මුලින් කතා කල දේවල් හැම එකේම ඒ කියන්නේ</span></span></p><p><span style="font-size: 15px"><span style="color: Green">1. Customer </span></span></p><p><span style="font-size: 15px"><span style="color: Green">2. Orders</span></span></p><p><span style="font-size: 15px"><span style="color: Green">3. Products</span></span></p><p><span style="font-size: 15px"><span style="color: Green">4. Company</span></span></p><p><span style="font-size: 15px"><span style="color: Green"></span></span></p><p><span style="font-size: 15px"><span style="color: Green">ඕනේ වෙන දෙයක් තමා </span></span></p><p><span style="font-size: 15px"><span style="color: Green">1. රෙකොර්ඩ් එකක් සේව් කරගන්න </span></span></p><p><span style="font-size: 15px"><span style="color: Green">2. රෙකොර්ඩ් ඔක්කොම ගන්න. </span></span></p><p><span style="font-size: 15px"><span style="color: Green">3. අප්ඩේට් කරන්න </span></span></p><p><span style="font-size: 15px"><span style="color: Green">4. ඩිලීට් කරන්න. </span></span></p><p><span style="font-size: 15px"><span style="color: Green">ඉතින් අපි මේ හැම එකටම එක තැනක් තියාගන්නවා . එකට තමා Repository එකක් කියන්නේ. මේක සම්බන්ද වෙනවා Software design Patterns වල Repository Pattern එකට</span></span></p><p></p><p><img src="http://oi65.tinypic.com/30j6yhf.jpg" alt="" class="fr-fic fr-dii fr-draggable " style="" /></p><p></p><p><span style="font-size: 15px"><span style="color: green">දැනට ඔය රතු පාට T කියන ලබ්බ අමතක කරන්න ඕනේ උබලා.</span></span></p><p><span style="font-size: 15px"><span style="color: green">එහෙම කරලා බැලුවොත් අර උඩින් තියන Customer, Product , Company ,Order හැම ටම මේ ටික කරගන්න ඕනේ නේද?</span></span></p><p><span style="font-size: 15px"><span style="color: green">ඉතින් සරලව කිව්වොත් ඔය T වෙනුවට උබලා Customer දැම්මොත් ඔය Repository එක CustomerRepository එකක් වෙනවා. ඕකට Product දැම්මොත් එක Product Repository එකක් වෙනවා</span></span></p><p><span style="font-size: 15px"><span style="color: green">.</span></span></p><p><span style="font-size: 15px"><span style="color: green">ඕක හරියට අර 2 කට ලව් කරන කෙල්ලෙක් ඒ ඒ කොල්ලා ලගදි උට ඕනේ විදිහට වෙනස් වෙනවා වගේ තමා. එකයි තියෙන්නේ ගඩොල් ස්ච්චුව වගේ .දාන මතට මොක උනත් අචුචුවේ විදිහට ගල් එන්නේ</span></span></p><p></p><p></p><p><span style="font-size: 18px">Unit Of Work නොහොත් එක ගෙයි කෑම</span></p><p></p><p><span style="font-size: 15px"><span style="color: green">ඔන්න පුතාලා දැන් තමා වැඩේ අමාරු හරිය. දැන් හිතන්න අපිට ඕනේ දෙයක් කරගන්න පුළුවන් තෝර් ගේ මිටිය වගේ එක තියනවා. ඒ තමා Repository eka. </span></span></p><p><span style="font-size: 15px"><span style="color: green"></span></span></p><p><span style="font-size: 15px"><span style="color: green">මට කරගන්නොනේ මෙහෙම එකක්. </span></span></p><p><span style="font-size: 15px"><span style="color: green">මේක ඔපරේට් කරන එකා ඔර්ඩර් එකක් දානවා. අන්න එතකොට අපිට මේ වැඩ ටික එක පර කරගන්න වෙනවා.</span></span></p><p><span style="font-size: 15px"><span style="color: green"></span></span></p><p><span style="font-size: 15px"><span style="color: green">1. Order එක සේව් කරන්න ඕනා</span></span></p><p><span style="font-size: 15px"><span style="color: green">2. Order එකේ තියන අයිටම් ටික සේව් කරන්න ඕනේ</span></span></p><p><span style="font-size: 15px"><span style="color: green">3. Stock එක වෙනස් කරන්න ඕනේ (අඩු)</span></span></p><p><span style="font-size: 15px"><span style="color: green"></span></span></p><p><span style="font-size: 15px"><span style="color: green">දැන් පේනවද? අපිට මේ ටික වෙන වෙනම කරන්න පුළුවන්. එත් එකක් හරි උනේ නැත්නම් හුටා තමා. ඉතින් මේ තුනම එක යුනිට් එකක් වෙන්න ඕනේ.එකට වෙන්න ඕනේ</span></span></p><p><span style="font-size: 15px"><span style="color: green">ඉතින් අර වෙන වෙනම තියන repository වලින් අපිට ඕනේ වැඩ ටික කරගන්න අපි යුනිට් හදාගන්නවා. මේකට තම unit of work කියන්නේ . මේකත් Software design pattern එකක්</span></span> පුතිලා</p><p></p><p><span style="font-size: 18px">Back End Service </span></p><p></p><p><span style="font-size: 15px"><span style="color: green">හරි දැන් මෙහෙම හිතමු , ඔන්න මගේ ඇප් එකේ තියනවා ඔර්ඩර් එකක් දාන තැන. එතන තියනවා සේව් කියලා බට්න් එකක් . දැන් මේක ප්රෙස් කලාම අර ඔර්ඩර් එක සව වෙන්න ඕනේ. එහෙමත් නැත්නම් අර ඔර්ඩර් සේව් කරන Unit OF work එක ඇහැරවලා එකෙන් වැඩ ගන්න ඕනේ. </span></span></p><p><span style="font-size: 15px"><span style="color: green">ඉතින් අපිට නිකන් මේ UOM එකට කතා කරන්න බැ වෙබ් එක හරහා. එකට වෙබ් සර්විස් එකක් හරහා කරන්න ඕනේ. වෙබ් සර්විස් එකක තියනවා end Point එකක් මේ ඔර්ඩර් එක සේව් කරන .එකට අර ඩේටා ටික යැව්වම එකෙන් Order Unit OF work ekata ඩේටා ටික දෙනවා. එකෙන් ඩේටා බේස් එකට සේව් කරනවා.</span></span></p><p><span style="font-size: 15px"><span style="color: green"></span></span></p><p><span style="font-size: 15px"><span style="color: green">හරි දැන් කියෙව්වා ඇති වැඩේට බහිමු. මුලින්ම තියෙන්නේ Visual Studio Project එකක් අරගෙන එකේ layers ටික කඩා ගන්න එක. ඒ ටික මම එන්ගිරිස් වලින් කොටන්නම් හොදේ. </span></span></p><p></p><p>මුලින්ම තියෙන්නේ අපේ Class ටික හදාගන්න. මේකට සාමන්යෙන් කියන්නේ Domain එක කියලා. සමහරු කියනවා model එක කියලත්. එක වෙනම project එකක්</p><p>1. Open Visual Studio and File>> New Project</p><p>2. Fill the form as shown in picture</p><p></p><p><img src="http://oi68.tinypic.com/sqnrt0.jpg" alt="" class="fr-fic fr-dii fr-draggable " style="" /></p><p></p><p></p><p><span style="font-size: 15px"><span style="color: green">මේ වෙනකොට අපි solution එකක් හදලා නැනේ. මේකෙන් වෙන්නේ </span></span></p><p><span style="font-size: 15px"><span style="color: green">1. Create a solution called “Gune”</span></span></p><p><span style="font-size: 15px"><span style="color: green">2. Create Project name “Gune.Domain”</span></span></p><p><span style="font-size: 15px"><span style="color: green"></span></span></p><p><span style="font-size: 15px"><span style="color: green">ඒ කියන්නේ Gune කියන සොලුෂන් එක ඇතුලේ “Gune.Domain” කියන ප්රොජෙක්ට් එක තියෙනවා. මේකෙන් Namespace හොයාගන්න ලේසි වෙනවා. අපි ප්රෝජෙච්ට් 20 ක් විතර තියන solution එකක වැඩ කරනකොට මේක හුගක් වැදගත්.</span></span></p><p><span style="font-size: 15px"><span style="color: green">දැන් ඉතින් අපේ අර තියන Class 4 මේකට දාගන්න ඕනේ. මම නම් ඉතාමත් සරලව කරන්නේ. උබලාට ඕනේ නම් වැඩිපුර Fileds දාගෙන කරන්න.</span></span></p><p><span style="font-size: 15px"><span style="color: green"></span></span></p><p><span style="font-size: 15px"><span style="color: green">වැදගත් දෙයක් කියන්න ඕනේ. Class වල නම් දානකොට ඒක වචනෙන් දාන්න ඕනේ. මොකද EF එකෙන් එක බහු වචන කරලා තමා ටේබල් නේම් එක හදන්නේ. සහ CamelCase වලින් නම් තියෙන්න ඕනේ. විශේෂයෙන් ස්ටර්ටර් ලා මේවා හරියට පිළිපදින්න ඕනේ. නැත්නම් ගුටි කන්න වෙන්නේ . Code Clearance , Comments , Scope Clearance කියන ඒවා නිකන් ගෙවල් සුද්ද කරලා පිරිසිදු කරලා තියාගන්නවා වගේ කරන්න ඕනේ.</span></span></p><p><span style="font-size: 15px"><span style="color: green"></span></span></p><p><span style="font-size: 15px"><span style="color: green">මම නම් හදාගත්තේ මේ විදිහට. ඉස්සරහට යනකොට මේකේ Properties වැඩි කරන්න වෙනවා. </span></span></p><p><span style="font-size: 15px"><span style="color: green"></span></span></p><p></p><p></p><p><img src="http://oi67.tinypic.com/2i95j86.jpg" alt="" class="fr-fic fr-dii fr-draggable " style="" /></p><p></p><p><img src="http://oi67.tinypic.com/2j5nhh3.jpg" alt="" class="fr-fic fr-dii fr-draggable " style="" /></p><p></p><p><img src="http://oi64.tinypic.com/hvcwec.jpg" alt="" class="fr-fic fr-dii fr-draggable " style="" /></p><p></p><p><span style="font-size: 18px">“Gune.Data” Project</span></p><p></p><p><span style="font-size: 15px"><span style="color: green">දැන් අපේ මොඩල් එක එහෙමත් නැත්නම් වැඩ කරන ඩොමෙන් එක හදලා ඉවරයි. දැන් තියෙන්නේ EF එකෙන් SQL server එකත් එක්ක ගනුදෙනු කරන එක. අපිට ඕනේ නම් පුළුවන් උඩින් කිව්වා Domain Project එකේම මේක කරන්න . එත් හැම දේම පිළිවෙලක් වෙන නිසා තමා මේක වෙනම Project එකකට ගත්තේ.</span></span></p><p><span style="font-size: 15px"><span style="color: green"></span></span></p><p><span style="font-size: 15px"><span style="color: green">අපි Entity Framework එක අපේ C# වලට දාගේම එක Configure කළා කියන්නේ අපේ ලග අර database එකේම කොපි එකක් තියනවා වගේ. හැබැයි ඩේටා නැතුව. එකට කියන්නේ “Schema Only” කියලා. බලමු කරන්නේ කොහොමද කියල.</span></span></p><p><span style="font-size: 15px"><span style="color: green">මුලින්ම අලුත් ප්රොජෙක්ට් එකක් හදන්නේ ඕනේ</span></span></p><p><span style="font-size: 15px"><span style="color: green">“Gune.Data” . මේකත් Class Library ටයිප් එකේ එකක්. </span></span></p><p></p><p><img src="http://oi63.tinypic.com/9jirgz.jpg" alt="" class="fr-fic fr-dii fr-draggable " style="" /></p><p></p><p><span style="font-size: 18px">Install EF</span></p><p></p><p><span style="font-size: 15px"><span style="color: green">දැන් කරන්න ඕනේ මේකට Entity Framework එක ඉන්ස්ටෝල් කරන එක. එකට අපිට තියනවා නගෙට් පැකේජ් මැනේජර් (Nugget Package Manager) . කියන එක. මේක වෙන්නේ මෙහෙමයි. ලෝකේ වටේ ඉන්න දිවලොප් කරන ය එකතු වෙලා මේ වගේ ප්රයෝජනවත් කොම්පොනන්ට් හදලා තියනවා. ඒවා හුගක එකතුවක් තමා නගෙට් පැකේජ් මැනේජර් (Nugget Package Manager) කියන්නේ. අපි කරන්නේ එක හරහා එකේ තියන Entity Framework එක දාගන්න එක.</span></span></p><p></p><p><img src="http://oi66.tinypic.com/16otc6.jpg" alt="" class="fr-fic fr-dii fr-draggable " style="" /></p><p></p><p><span style="font-size: 15px"><span style="color: green">ඕනෙම ප්රොජෙක්ට් එකක හෝ Solution eke</span></span></p><p><span style="font-size: 15px"><span style="color: green">1. Right Click on solution or project.</span></span></p><p><span style="font-size: 15px"><span style="color: green">2. select “Manage Nuget Packages” </span></span></p><p><span style="font-size: 15px"><span style="color: green">දැන් ඉහත ආකාරයට අදාළ එක සිලෙක්ට් කරගෙන ඉන්ස්ටෝල් බටන් එකෙන් ඉන්ස්ටෝල් කරගන්න ඕනේ </span></span></p><p><span style="font-size: 15px"><span style="color: green"></span></span></p><p><span style="font-size: 15px"><span style="color: green"></span></span></p><p></p><p></p><p><span style="font-size: 18px">Configure EF</span></p><p></p><p><span style="font-size: 15px"><span style="color: Green">හොදා දැන් කරන්න තියෙන්නේ අපේ EF එක configure කරගන්න එක. මේකෙදී </span></span></p><p><span style="font-size: 15px"><span style="color: Green">1. Add Class name “MainDBContext” to your Data Project </span></span></p><p><span style="font-size: 15px"><span style="color: Green">2. Inherite it with “DbContext” . DbContext is the most important class in the EntityFreamwork</span></span></p><p><span style="font-size: 15px"><span style="color: Green">3. Overide the base class constructor . </span></span></p><p><span style="font-size: 15px"><span style="color: Green"></span></span></p><p><span style="font-size: 15px"><span style="color: Green">DbContext කියන එක ගන්න බැරි නම් ඒ කියන්නේ EF එක ඉන්ස්ටෝල් වෙලා න කියන එක. </span></span></p><p><span style="font-size: 15px"><span style="color: Green"></span></span></p><p><span style="font-size: 15px"><span style="color: Green"></span></span></p><p></p><p><img src="http://oi67.tinypic.com/20f5dur.jpg" alt="" class="fr-fic fr-dii fr-draggable " style="" /></p><p></p><p><span style="font-size: 15px"><span style="color: green">:Base(“SysCon”) කියන එකෙන් කලේ අර ඉන්හෙරිට් කරපු DbContext ක්ලාස් එකේ තියන Constructor එක Overide කළා . එහෙම කරන කොට එකට Connection String එකේ නම දෙන්න ඕනේ. මේකෙදි එකේ නම “SysCon”.</span></span></p><p><span style="font-size: 15px"><span style="color: green"></span></span></p><p><span style="font-size: 15px"><span style="color: green">දැන් මේ “SysCon” කියන Connection String එක ප්රොජෙක්ට් එකක Config File එකට දාන්න ඕනේ. දැනට අපි එකත් මේකෙම දාගන්නවා.මතක තියාගන්න EF එක මේ SysCon කියන එක හොයන්නේ “StartUp Project” එකේ Config ෆයිල් එකේ කියලා.</span></span></p><p></p><p></p><p><span style="font-size: 18px">Add “SysCon” to Config </span></p><p></p><p><span style="color: green"><span style="font-size: 15px">1. Open app.config file in Data Project </span></span></p><p><span style="color: green"><span style="font-size: 15px">2. Add Connection string as Following figure </span></span></p><p></p><p><img src="http://oi63.tinypic.com/2822nnb.jpg" alt="" class="fr-fic fr-dii fr-draggable " style="" /></p><p></p><p></p><p><span style="font-size: 15px"><span style="color: green">මේක නම් හුගක් දෙනෙක් දන්නවනේ. නොදන්නා ය අහන්න ඕනේ කියලා දෙන්නම්. මේකේ වෙන්න ඕනේ එකම දේ තමා </span></span></p><p><span style="font-size: 15px"><span style="color: green">name එක “SysCon”. වෙන්න ඕනේ එක.</span></span></p><p><span style="font-size: 15px"><span style="color: green"></span></span></p><p><span style="font-size: 15px"><span style="color: green"></span></span></p><p><span style="font-size: 15px"><span style="color: green"></span></span></p><p><span style="font-size: 15px"><span style="color: green"><strong>DBSet </strong></span></span></p><p><span style="font-size: 15px"><span style="color: green"></span></span></p><p><span style="font-size: 15px"><span style="color: green">දැන් මේ පුතිලා මෙහෙම හිතන්න ඕනේ. </span></span></p><p><span style="font-size: 15px"><span style="color: green"><strong>MainDBContext</strong> එක කියන්නේ අපේ ප්රෝග්රෑම් එක ඇතුලේ <strong>DetaBase</strong> එක වගේ. එහෙනම් කෝ එකේ Tables? </span></span></p><p><span style="font-size: 15px"><span style="color: green">අන්න එකට තමා මේ DbSet තියෙන්නේ. ඔයාලට පුළුවන් මේ <strong>MainDBContext</strong> එක ඇතුලේ ඕනේ තරම් DbSet හදාගන්න . ඒ හදන හැම එකක්ම අවසානයේ SQL Server එකේ ටේබල් එකක් වෙනවා. හදන්නේ මෙහෙමයි</span></span></p><p><span style="font-size: 15px"><span style="color: green"></span></span></p><p><span style="font-size: 15px"><span style="color: green">[CODE]public DbSet<Customer> Customer { get; set; }[/CODE]</span></span></p><p><span style="font-size: 15px"><span style="color: green"></span></span></p><p><span style="font-size: 15px"><span style="color: green">මේ වගේ අර අනික් 4 ම හදාගන්න ඕනේ. මේ වගේ</span></span></p><p><span style="font-size: 15px"><span style="color: green"></span></span></p><p></p><p></p><p><img src="http://oi66.tinypic.com/skzuk3.jpg" alt="" class="fr-fic fr-dii fr-draggable " style="" /></p><p></p><p><span style="font-size: 18px">හක්ක පනින වැඩේ (DB Migrations)</span></p><p></p><p><span style="font-size: 15px"><span style="color: green">දැන් පුතිලා අපි MainDBContext එක හැදුවා . එකේ DbSet 4 ක් හැදුවා . ඒ කියන්නේ SQL server එකේ ඩේටා බේස් එකක් හදලා එකේ ටේබල් 4 ක් හැදුවා වගේ. වැඩේ කියන්නේ තාම SQL දන්නේ නැ අපි මෙහෙම දෙයක් කළා කියලා. එකට අපි පොරට (SQL server) එකට කියන්න ඕනේ අපි මෙහෙම වැඩක් කරලා තියෙන්නේ කියලා. එකට තමා Migrate කරනවා කියන්නේ.</span></span></p><p><span style="font-size: 15px"><span style="color: green">කරන්න තියන වැඩේ සිම්පල්. මුලින්ම යන්න ඕනේ “Package Manager Console” එකට. එක ගන්න විධිහ පහත රුපෙන් පෙනේවි .</span></span></p><p></p><p><img src="http://oi63.tinypic.com/5ldirp.jpg" alt="" class="fr-fic fr-dii fr-draggable " style="" /></p><p></p><p><span style="font-size: 15px"><span style="color: green">දැන් එකේ අපේ පලවෙනි කමාන්ඩ් එක රන් කරන්න ඕනේ එක තමා</span></span></p><p><span style="font-size: 15px"><span style="color: green"></span></span></p><p><span style="font-size: 15px"><span style="color: green">[CODE]enable-migrations[/CODE]</span></span></p><p><span style="font-size: 15px"><span style="color: green"></span></span></p><p><span style="font-size: 15px"><span style="color: green">මේක මේ විදිහටම තියෙන්න ඕනේ. වැරදුනොත් එහෙම රතු පාටින් ලේ ගංගාවක් ගැලුවා වගේ එයි. </span></span></p><p><span style="font-size: 15px"><span style="color: green">මේකෙන් වෙන්නේ අපි කියනවා දැන් අපි SQL එක්ක ගනුදෙනු කරන්න ලෑස්තියි කියලා.</span></span></p><p><span style="font-size: 15px"><span style="color: green">මේක රන් කලාම අපිට EF එකෙන් හදලා දෙනවා Configuration ෆයිල් එකක්. එකේ Constructor එකේ තියනවා </span></span></p><p><span style="font-size: 15px"><span style="color: green"></span></span></p><p><span style="font-size: 15px"><span style="color: green">[CODE]AutomaticMigrationsEnabled = false;[/CODE]</span></span></p><p><span style="font-size: 15px"><span style="color: green"></span></span></p><p><span style="font-size: 15px"><span style="color: green">කියලා . මේක True. කරන්න ඕනේ. ඒ කියන්නේ අපි කරන වෙනස් කම් automatically database එකට ගහන්න කියන එක සරලවම</span></span></p><p><span style="font-size: 15px"><span style="color: green"></span></span></p><p><span style="font-size: 15px"><span style="color: green">අන්තිම කමාන්ඩ් එක තමා </span></span></p><p><span style="font-size: 15px"><span style="color: green"></span></span></p><p><span style="font-size: 15px"><span style="color: green"></span></span></p><p><span style="font-size: 15px"><span style="color: green">[CODE]update-database -f -script[/CODE]</span></span></p><p><span style="font-size: 15px"><span style="color: green"></span></span></p><p><span style="font-size: 15px"><span style="color: green">-f කියන්නේ force කරලා වෙනස්කම් අප්ඩේට් කරන්න කියන එක.</span></span></p><p><span style="font-size: 15px"><span style="color: green">-script කියන්නේ අපිට හැදෙන SQL script එක පෙන්නන කියන එක.</span></span></p><p><span style="font-size: 15px"><span style="color: green">දැන් එනවා ලස්සන script එකක් ඔයාගේ ඔය C# ඇතුලේ හදපු schema එක ට අදාලව SQL script එක. –script ටැග් එක අයින් කරලා ආයි රන් කලොත් SQL Server එකේ Database එක හැදේවි </span></span></p><p><span style="font-size: 15px"><span style="color: green"></span></span></p><p><span style="font-size: 15px"><span style="color: green"></span></span></p><p></p><p><img src="http://oi68.tinypic.com/10ydpbn.jpg" alt="" class="fr-fic fr-dii fr-draggable " style="" /></p><p></p><p></p><p><span style="font-size: 15px"><span style="color: green">ඔන්න දැන් අපි ඩේටාබේස් එක හැදුවා C# ඇතුලේ ඉගෙන. දැන් ඔයාල අර මොඩල් එකට මොනයම් හෝ වෙනසක් කලොත් </span></span></p><p><span style="font-size: 15px"><span style="color: green"></span></span></p><p><span style="font-size: 15px"><span style="color: green">[CODE]update-database –f [/CODE]</span></span></p><p><span style="font-size: 15px"><span style="color: green"></span></span></p><p><span style="font-size: 15px"><span style="color: green">වලින් ඒ වෙනසක් කම ඩේටා බේස් එකට දාගන්න පුළුවන්.</span></span></p><p><span style="font-size: 15px"><span style="color: green"></span></span></p><p></p><p></p><p>==========================================================================</p><p><span style="font-size: 18px">Repository(රෙපොසිටෝරි)</span></p><p></p><p><span style="color: green"><span style="font-size: 15px">දැන් තියන විදිහට ටයිප් කරන්න සැහෙන අමාරුයි. ඒ උනාට යමු ඉස්සරහට. අපි මුලින්ම කිව්වා විදිහට දැන් තමා ඔක්කොම එක තැනින් කරන මැජික් එක කරන්න යන්නේ. </span></span></p><p><span style="color: green"><span style="font-size: 15px">මුලින්ම අපි හදාගන්න ඕනේ අලුතින් ප්රොජෙක්ට් එකක් </span></span></p><p><span style="color: green"><span style="font-size: 15px"></span></span></p><p><span style="color: green"><span style="font-size: 15px">“Gune.Repository”</span></span></p><p><span style="color: green"><span style="font-size: 15px"></span></span></p><p><span style="color: green"><span style="font-size: 15px">රෙපොසිටෝරි එකක් කියන්නේ එකතුවක් නේ. ඉතින් මේ එකතුව අපි මුලින් හරියට පෙළ ගස්වා ගන්න ඕනේ. එකට අපිට තියනවා Interfaces කියලා ජාතියක්. හැමෝම මේක දානවා. Interfaces වල තියන හොද ගතිය අපිට එතැනදී මොකුත් දෙන්න ඕනේ න. ඔහේ මෙතඩ් හදාගෙන යන්න පුළුවන්. ඉතින් මේක පාවිච්චි කරලා අපි Template එකක් හදාගන්නවා වැඩේට හරියන්න.</span></span></p><p><span style="color: green"><span style="font-size: 15px"></span></span></p><p></p><p><img src="http://oi65.tinypic.com/30j6yhf.jpg" alt="" class="fr-fic fr-dii fr-draggable " style="" /></p><p></p><p><span style="font-size: 15px"><span style="color: green"></span></span></p><p><span style="font-size: 15px"><span style="color: green">මේකේ මේ T කියන එක වෙනුවට අපිට ඕනේ එකක් පාස් කරන්න පුළුවන්. මම කරන්නේ ඕකට මුලින් දානවා මෙහෙම එකක්. </span></span></p><p><span style="font-size: 15px"><span style="color: green"></span></span></p><p><span style="font-size: 15px"><span style="color: green">[CODE]public class RepositoryBaseMain<T> : IRepositoryBase<T> where T : class[/CODE]</span></span></p><p><span style="font-size: 15px"><span style="color: green"></span></span></p><p><span style="font-size: 15px"><span style="color: green">දැන් මේ T එක වෙනුවට යවන්න පුළුවන් Class එකක් විතරයි. මේකට අපි කියනවා</span></span></p><p><span style="font-size: 15px"><span style="color: green"></span></span></p><p><span style="font-size: 15px"><span style="color: green">Constraints on type parameters කියලා</span></span></p><p><span style="font-size: 15px"><span style="color: green"></span></span></p><p><span style="font-size: 15px"><span style="color: green">වැඩි විස්තර සදහා.</span></span></p><p><span style="font-size: 15px"><span style="color: green"><a href="https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/generics/constraints-on-type-parameters" target="_blank">https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/generics/constraints-on-type-parameters</a></span></span></p><p><span style="font-size: 15px"><span style="color: green"></span></span></p><p><span style="font-size: 15px"><span style="color: green">ඒ වගේම මේ T කතාව තේරුනේ නැත්නම් අහන්න ඕනේ.</span></span></p><p><span style="font-size: 15px"><span style="color: green"></span></span></p><p></p><p></p><p><span style="font-size: 18px">RepositoryBaseMain </span></p><p></p><p><span style="font-size: 15px"><span style="color: green">දැන් අරක පාවිච්චි කරලා අපේ ප්රදාන Repository එක හදාගන්න තමා යන්නේ. එකට කරන්න තියෙන්නේ අර හදාගත්ත Interface එක Implement කරන එක. </span></span></p><p><span style="font-size: 15px"><span style="color: green"></span></span></p><p><span style="font-size: 15px"><span style="color: green">මේ විදිහට කලාම හරි.</span></span></p><p><span style="font-size: 15px"><span style="color: green"></span></span></p><p><span style="font-size: 15px"><span style="color: green">[CODE]public class RepositoryBaseMain<T> : IRepositoryBase<T> where T : class[/CODE]</span></span></p><p><span style="font-size: 15px"><span style="color: green"></span></span></p><p><span style="font-size: 15px"><span style="color: green">මේකෙදි වෙන්නේ අර interface එකට අපි දාන Class එකම RepositoryBaseMain class එකටත් පාස් වෙනවා.</span></span></p><p><span style="font-size: 15px"><span style="color: green">අපි Customer පාස් කලොත් Customer RepositoryBaseMain ekak හැදෙන්නේ මෙන්න මේ වෙලාවේදී. interface එකක් implement කරන කොට එකේ තියන හැම method එකක්ම implement කරන්න ඕනේ. </span></span></p><p></p><p></p><p><img src="http://oi64.tinypic.com/2qa0jn9.jpg" alt="" class="fr-fic fr-dii fr-draggable " style="" /></p><p></p><p><span style="font-size: 15px"><span style="color: green">දැන් අපිට තියෙන්නේ කලින් හදාගත්ත MainDbContext එක පාවිච්චි කරලා මේ මෙතඩ් ටික හරියට හදාගන්න එක.</span></span></p><p></p><p></p><p><img src="http://oi67.tinypic.com/e09x2.jpg" alt="" class="fr-fic fr-dii fr-draggable " style="" /></p><p></p><p><span style="font-size: 15px"><span style="color: green">ඔන්න උඩින්ම DBContext එකෙන් instance එකක් හදාගත්තා. </span></span></p><p><span style="font-size: 15px"><span style="color: green">ඒ වගේම DBSet එකෙනුත් එකක් හදාගත්තා.</span></span></p><p><span style="font-size: 15px"><span style="color: green"></span></span></p><p><span style="font-size: 15px"><span style="color: green">මේ දෙකෙන් කියවෙන්නේ අර උඩින් එන T එක Customer nam </span></span></p><p><span style="font-size: 15px"><span style="color: green"></span></span></p><p><span style="font-size: 15px"><span style="color: green">DBSet<T> = Customer table</span></span></p><p><span style="font-size: 15px"><span style="color: green"></span></span></p><p><span style="font-size: 15px"><span style="color: green">මෙහෙම දැනට හිතාගන්න.</span></span></p><p></p><p></p><p></p><p><span style="font-size: 18px">Method Implementation</span></p><p><span style="font-size: 15px"><span style="color: green"></span></span></p><p><span style="font-size: 15px"><span style="color: green">දැනට මම පෙන්නනම් FindAll() මෙතොඩ් එක කොහොමද සම්පුර්ණ කරන්නේ කියලා. </span></span></p><p><span style="font-size: 15px"><span style="color: green">හරිම ලේසි දැන් අපිට තියනවා උඩින් එන ඕනෙම Class එකකට අදාළ වෙන ටේබල් එකක් </span></span></p><p><span style="font-size: 15px"><span style="color: green"></span></span></p><p><span style="font-size: 15px"><span style="color: green">[CODE]DBSet<T>[/CODE]</span></span></p><p><span style="font-size: 15px"><span style="color: green"></span></span></p><p><span style="font-size: 15px"><span style="color: green">ඉතින් මේකේ තියනවා අර ටේබල් එකේ තියන ඔක්කොම රෙකොර්ඩ්ස් . හරිම ලේසි</span></span></p><p><span style="font-size: 15px"><span style="color: green"></span></span></p><p><span style="font-size: 15px"><span style="color: green"></span></span></p><p><span style="font-size: 15px"><span style="color: green"></span></span></p><p></p><p><img src="http://oi68.tinypic.com/14t9cw2.jpg" alt="" class="fr-fic fr-dii fr-draggable " style="" /></p><p></p><p><span style="font-size: 15px"><span style="color: green">ID එකෙන් find කරගන්න ඕනේ නම්</span></span></p><p></p><p><img src="http://oi66.tinypic.com/2cruhwi.jpg" alt="" class="fr-fic fr-dii fr-draggable " style="" /></p><p></p><p></p><p><span style="font-size: 15px"><span style="color: green">මේකෙන් කලේ අර ටේබල් එකේ id එකෙන් Find එකක් ගැහුවා. ඒ කියන්නේ ලිස්ට් එකක </span></span></p><p><span style="font-size: 15px"><span style="color: green">Find එකක් වගේ</span></span></p><p></p><p></p><p></p><p><span style="font-size: 18px">මේක පාවිච්චි කරන විදිහ</span></p><p></p><p><img src="http://oi68.tinypic.com/5ey5nq.jpg" alt="" class="fr-fic fr-dii fr-draggable " style="" /></p><p></p><p><span style="color: Green"><span style="font-size: 15px"><span style="color: Indigo">1. ලයින් 26 න පෙන්නේ අපි අර “Gune.Data” ප්රොජෙක්ට් එකේ හදාගත්ත MainDbContext එකෙන් instance එකක් හදාගත්තා. ඒ කියන්නේ ඩේටා බේස් එක අතේ තියනවා වගේ.</span></span></span></p><p><span style="color: Green"><span style="font-size: 15px"><span style="color: Indigo">2. RepositoryBaseMain කිව්වේ අර කොල්ලෝ දෙන්නෙක් ලදී දෙවිදිහකට ඉන්න කෙල්ලෙක් වගේ . එකේ T මගුල වෙනුවට මෙතැනදී අපි දුන්නේ Customer Class එක. දැන් පේනවද? ඊලග ලයින් එකෙන් තියෙන්නේ ඔක්කොම Customar la ගන්න එක. මොකද අපි ඇතුලට දෙන type එකෙන් තමා අපහු පිටට result denne</span></span></span></p><p><span style="color: Green"><span style="font-size: 15px"><span style="color: Indigo">3. ඒ වගේම එකෙන්ම අපි එක රෙකොර්ඩ් එකක් ගත්තා.</span></span></span></p><p><span style="color: Green"><span style="font-size: 15px"><span style="color: Indigo">4. ඔන්න දැන් කෙල්ල වෙස් මාරු කළා. දැන් දාගත්තා product කියන වෙස් මුණ. දැන් ඉතින් එලියට එන හැම එකම සහ ඇතුලට යන හැම එකම product එකක් හෝ ගොඩක්</span></span></span></p><p><span style="color: Green"><span style="font-size: 15px"><span style="color: Indigo"></span></span></span></p><p><span style="color: Green"><span style="font-size: 15px"><span style="color: Indigo">මේ මුල අත රිදෙනවා බන් දැන්. ඕනේ කම තිබ්බට සිංහලෙන් කොටන රගේ අද තමා දැනුනේ. මේකේ අනන්තවත් ප්රශ්න ඇති ඒවා අහන්න ඕනේ. </span></span></span></p><p><span style="color: Green"><span style="font-size: 15px"><span style="color: Indigo"></span></span></span></p><p><span style="color: Green"><span style="font-size: 15px"><span style="color: Indigo">මේකේ පාඩම් අංක දෙක.</span></span></span></p><p><span style="color: Green"><span style="font-size: 15px"><span style="color: Indigo">Data Access With Dapper and Web-API Services</span></span></span></p><p><span style="color: Green"><span style="font-size: 15px"><span style="color: Indigo"></span></span></span></p><p><span style="color: Green"><span style="font-size: 15px"><span style="color: Indigo">Project Source Code eka passe dannam</span></span></span></p><p><span style="color: Green"><span style="font-size: 15px"><span style="color: Indigo"></span></span></span></p><p><span style="color: Green"><span style="font-size: 15px"><span style="color: Indigo">ජය</span></span></span></p><p><span style="color: Green"><span style="font-size: 15px"><span style="color: Indigo"></span></span></span></p><p><span style="color: Green"><span style="font-size: 15px"><span style="color: Indigo"></span></span></span></p></blockquote><p></p>
[QUOTE="HAneo, post: 23241167, member: 17432"] [SIZE="5"][COLOR="Red"]සෝස් කෝඩ් එක සහ නොට් එකට මේකෙන් යන්න පුළුවන් [CODE] [URL="http://www.elakiri.com/forum/showthread.php?p=23242975#post23242975"]http://www.elakiri.com/forum/showthread.php?p=23242975#post23242975[/URL] [/CODE][/COLOR][/SIZE] [SIZE="5"][COLOR="Black"]ගුනේගේ කේක් කඩේ නොහොත් Project "Gune"[/COLOR][/SIZE] [COLOR="green"][SIZE="4"]ඔන්න එහෙනම් කිව්ව විදිහටම වැඩේ පටන් ගත්තා. උබලට මේක ටිකක් වෙනස් විදිහට පෙනෙයි. මොකද මේක කියල දෙන්නේ බාබා ලන්තේ ඉන්න උන්ට නෙමේ හින්දා මගේ ගුරා මට කියලා දුන්නා විදිහට. ඒ කියන්නේ තල්ලු කරලා පීනන්න කියන තියරි එකට ඔන්න උබලගේ පැත්තේ කඩයක් තියනවා. උ හදන්නේ ස්පොන්ජ් කේක්. මේකේ ස්පොන්ජ් කේක් වර්ග ගොඩක් තියනවා.මේ යකා එහෙම නිකන් ආවාට ගියාට කේක් දෙන්නේ නැ. පොර ඔර්ඩර් වලට විතරයි දෙන්නේ. උගේ කේක් ම කන සෙට් එකක් ඉන්නවා. ඉතින් ඔර්ඩර් වලට තමා කේක් හදන්නේ. මේ පොරට ඕනේ කස්ටමර් ලට වෙබ් එකෙන් කේක් ඔර්ඩර් කරන්න. උ සැහෙන්න රට යන එකෙක් ඒ නිසා වෙබ් එකෙන් තමා උ හුගක් දේවල් කරගන්නේ. වැදගත්ම දේ මේ පොර උබේ ලගට එනවා මේකට හරියන මොකක් හරි මගුලක් කරලා දීපන් කියලා. උ නං කියයි මගුල කියලා. දැන් අපි මොකද කරන්නේ? දැන් ඉතින් උබලගේ දිග්ගිරි එක ගත්ත කැම්පස් එක මතක් කරගෙන මේකට විසදුමක් දෙන්න ඕනේ. “හරි ලොක්කා වැඩේ කරමු. මේකට වෙබ් එකෙන් නිකන් වෙබ් සයිට් එකක් වගේ එකක් කරමු. හැබැයි මේක වෙබ් සයිට් එකක්ම නෙමේ පොඩි සොෆ්ට්වයර් එකක් වගේ එකක්.” “උබ කියනවනම් ඕනේ එකක්. මේ රට ගියාම සෙල් එක එහෙම බලාගන්න පුලුවන්ද? ඒ වගේම ච්කස්ටමර් ලට ෆීඩ් බැක් එකක් ප්රමෝෂන් එකක් වගේ කරන්න පුළුවන් වෙයි නේද?” “ඔව් පුළුවන්. හැබැයි මේකෙන් රෙදි සෝදන්න පාරට තාර දන්නා වගේ හැම දේම ඉල්ලන්න එපා යකෝ. මුලින් උබට මම කස්ටමර් ට ඔර්ඩර් කරන ටික හදලා දෙන්නම්. පස්සේ මේක ටික ටික ලොකු කරගමු”.[/SIZE][/COLOR] [SIZE="5"][B]රෙදි නැතිව පිනිම - Identify Objects [/B][/SIZE] [SIZE="4"][COLOR="Green"]කස්ටමර් ට ඕනේ දේ දැන් උබලා දන්නවනේ. ඕකෙන් කියන ඔක්කොම නාම පද ඔබ්ජෙක්ට් එකක් එහෙම නැත්නම් ක්ලාස් එකක් වෙනවා. “උබලගේ පැත්තේ කඩයක් තියනවා” – Company “හදන්නේ ස්පොන්ජ් කේක්” – Products “පොර ඔර්ඩර් වලට විතරයි දෙන්නේ” - “Orders” “මේ පොරට ඕනේ කස්ටමර් ලට..” - Customers දැන් උබලා කැමති විදිහකට මේක ඩිසයින් කරගන්න පුළුවන්. ඕනේ diagram එකක් ඇදගන්න පුළුවන්. උදව්වක් ඕනේ නම් දෙන්නම් . කරලා පෙන්නන. මේක තමා සිම්පල් ම ක්රමේ. [/COLOR][/SIZE] [SIZE="5"]Service Oriented Architecture [/SIZE] [IMG]http://oi63.tinypic.com/rbjh3t.jpg[/IMG] [SIZE="4"][COLOR="green"]මේ වැඩේ කරනකොට තියන ප්රදානම දෙයක් තමා වෙබ් එකේ වෙන්න ඕනේ. ඉතින් මේකට ඕනෙම වෙබ් technology එකක් පාවිච්චි කරන්න පුළුවන්. අපි බලන්නේ මේක SOA විදිහට කරන්නේ කොහොමද කියලා. පෙර කාලේ ඒ කියන්නේ අපි ඉගෙන ගන්න කාලේ තිබ්බේ Client Server architecture එක . ඒ කියන්නේ සර්වර් එකක් තියනවා. එකට සම්බන්ද උන කම්පුටර් වල ඉදන් අරකේ තියන database එක පාවිච්චි කරලා වැඩ කරනවා. මේක ඉතින් ඉන්න තැන ඉදන් විතරයි කරන්න පුළුවන්. සැහෙන පාඩු තියනවා .පස්සේ කලෙත් එක්ක එක්ක මේක වෙනස් උනා. ඒ කියන්නේ මේක කැඩුවා layer කීපයකට. එකට කිව්වේ 3-Tire architecture කියලා 1. Data Access layer 2. Business Logic layer 3. UI layer මේ 3-Tire architecture සැහෙන්න පාවිච්චි උනා . ඒ වෙබ් එක දියුණු වෙනකන් විතරයි. වෙබ් එකේ දියුණුවත් එක්ක කට්ටියට ඕනේ උනා මේකේ Database එක වෙනම තැනක තියාගන්න. BL එක වෙනම තැනක. UI එක වෙනම තැනක තියාගන්න. ඉතින් එකට අපු විසදුම තමා මේ SOA මේකේ පලවෙනි එක තමා Detabase එක . එක ගැන වැඩිය කියන්න ඕනේ නැති නිසා කියන්නේ නැ. එත් පරණ SQL වලට වඩා අලුත් Versions මේ SOA වලට හුගක් උදව් කරනවා . [/COLOR][/SIZE] [SIZE="5"]Data Access Layer[/SIZE] [SIZE="4"][COLOR="green"]අනේ ඉතිං පරණ ADO.Net වලට පින් සිද්ද වෙන්න ඉස්සර අපි Database එකේ ඉදන් ඩේට එහෙ මෙහෙ කරගත්තා. එත් ඒ කරපු උන්දැලා දන්නවනේ එකේ තියන අමාරුව. Custom Library ගහගෙන වැඩ කරන්න ඕනේ. ඔය යටි බඩේ මෙන්සස් අමාරුව තේරුම් ගත්ත පින්වත්තු සෙට් එකක් හැදුවා Entity Framework කියලා එකක්. එකෙන් වෙන්නේ සරලවම SQL Data Table එකක් අපේ ප්රෝග්රෑම් එකේ Object වලට හරවලා දෙනවා. මේකෙදි [/COLOR][/SIZE] [SIZE="3"][COLOR="Magenta"]1 row of a table = 1 object of curesponding Class [/COLOR][/SIZE] [COLOR="Green"][SIZE="4"]හිතන්න customer table එකේ තියනවා එක row එකක්. ------------------------------- Customer Name | Age ------------------------------- Haneo | 21 ------------------------------- EF වලින් මේක අපිට Customer object එකක් විදිහට හදලා දෙනවා. ඉස්සර ඉක පුරාගෙන කරපු දේවල් දැන් එක ලයින් එකෙන් කරගන්න පුළුවන්. [/SIZE][/COLOR] [IMG]http://oi65.tinypic.com/16c483s.jpg[/IMG] [COLOR="Magenta"][SIZE="3"]Dapper කියන එකත් මේ වගේම එකක්. මේ දෙකේ වෙනස් කම් තියනවා. අපි ඒවා පස්සේ කතා කරනවා.[/SIZE][/COLOR] [SIZE="5"]Business Logic[/SIZE] [SIZE="4"][COLOR="Green"]ඉස්සර මේකෙදි කලේ අර Analysis කරලා Design කල දේවල් ටික Functional Methods ටිකක් විධිහට ගහගන්න එක. දැන් එහෙම නෙමේ. දැන් අපි කරන්නේ එකට එකක් සම්බන්ද වෙන Function එකම තැනකින් දෙන එක. මේ ක්රමේදී තියන වාසිය තමා වෙන වෙන දේවල් වලට වෙන වෙනම functions අවශ්ය නොවීම. හැම දේට එකම තැනකින් කරගන්න පුළුවන් කම. මේක තේරෙන්නේ නැනේ මෙහෙම කියන්නම්. අපේ මුලින් කතා කල දේවල් හැම එකේම ඒ කියන්නේ 1. Customer 2. Orders 3. Products 4. Company ඕනේ වෙන දෙයක් තමා 1. රෙකොර්ඩ් එකක් සේව් කරගන්න 2. රෙකොර්ඩ් ඔක්කොම ගන්න. 3. අප්ඩේට් කරන්න 4. ඩිලීට් කරන්න. ඉතින් අපි මේ හැම එකටම එක තැනක් තියාගන්නවා . එකට තමා Repository එකක් කියන්නේ. මේක සම්බන්ද වෙනවා Software design Patterns වල Repository Pattern එකට[/COLOR][/SIZE] [IMG]http://oi65.tinypic.com/30j6yhf.jpg[/IMG] [SIZE="4"][COLOR="green"]දැනට ඔය රතු පාට T කියන ලබ්බ අමතක කරන්න ඕනේ උබලා. එහෙම කරලා බැලුවොත් අර උඩින් තියන Customer, Product , Company ,Order හැම ටම මේ ටික කරගන්න ඕනේ නේද? ඉතින් සරලව කිව්වොත් ඔය T වෙනුවට උබලා Customer දැම්මොත් ඔය Repository එක CustomerRepository එකක් වෙනවා. ඕකට Product දැම්මොත් එක Product Repository එකක් වෙනවා . ඕක හරියට අර 2 කට ලව් කරන කෙල්ලෙක් ඒ ඒ කොල්ලා ලගදි උට ඕනේ විදිහට වෙනස් වෙනවා වගේ තමා. එකයි තියෙන්නේ ගඩොල් ස්ච්චුව වගේ .දාන මතට මොක උනත් අචුචුවේ විදිහට ගල් එන්නේ[/COLOR][/SIZE] [SIZE="5"]Unit Of Work නොහොත් එක ගෙයි කෑම[/SIZE] [SIZE="4"][COLOR="green"]ඔන්න පුතාලා දැන් තමා වැඩේ අමාරු හරිය. දැන් හිතන්න අපිට ඕනේ දෙයක් කරගන්න පුළුවන් තෝර් ගේ මිටිය වගේ එක තියනවා. ඒ තමා Repository eka. මට කරගන්නොනේ මෙහෙම එකක්. මේක ඔපරේට් කරන එකා ඔර්ඩර් එකක් දානවා. අන්න එතකොට අපිට මේ වැඩ ටික එක පර කරගන්න වෙනවා. 1. Order එක සේව් කරන්න ඕනා 2. Order එකේ තියන අයිටම් ටික සේව් කරන්න ඕනේ 3. Stock එක වෙනස් කරන්න ඕනේ (අඩු) දැන් පේනවද? අපිට මේ ටික වෙන වෙනම කරන්න පුළුවන්. එත් එකක් හරි උනේ නැත්නම් හුටා තමා. ඉතින් මේ තුනම එක යුනිට් එකක් වෙන්න ඕනේ.එකට වෙන්න ඕනේ ඉතින් අර වෙන වෙනම තියන repository වලින් අපිට ඕනේ වැඩ ටික කරගන්න අපි යුනිට් හදාගන්නවා. මේකට තම unit of work කියන්නේ . මේකත් Software design pattern එකක්[/COLOR][/SIZE] පුතිලා [SIZE="5"]Back End Service [/SIZE] [SIZE="4"][COLOR="green"]හරි දැන් මෙහෙම හිතමු , ඔන්න මගේ ඇප් එකේ තියනවා ඔර්ඩර් එකක් දාන තැන. එතන තියනවා සේව් කියලා බට්න් එකක් . දැන් මේක ප්රෙස් කලාම අර ඔර්ඩර් එක සව වෙන්න ඕනේ. එහෙමත් නැත්නම් අර ඔර්ඩර් සේව් කරන Unit OF work එක ඇහැරවලා එකෙන් වැඩ ගන්න ඕනේ. ඉතින් අපිට නිකන් මේ UOM එකට කතා කරන්න බැ වෙබ් එක හරහා. එකට වෙබ් සර්විස් එකක් හරහා කරන්න ඕනේ. වෙබ් සර්විස් එකක තියනවා end Point එකක් මේ ඔර්ඩර් එක සේව් කරන .එකට අර ඩේටා ටික යැව්වම එකෙන් Order Unit OF work ekata ඩේටා ටික දෙනවා. එකෙන් ඩේටා බේස් එකට සේව් කරනවා. හරි දැන් කියෙව්වා ඇති වැඩේට බහිමු. මුලින්ම තියෙන්නේ Visual Studio Project එකක් අරගෙන එකේ layers ටික කඩා ගන්න එක. ඒ ටික මම එන්ගිරිස් වලින් කොටන්නම් හොදේ. [/COLOR][/SIZE] මුලින්ම තියෙන්නේ අපේ Class ටික හදාගන්න. මේකට සාමන්යෙන් කියන්නේ Domain එක කියලා. සමහරු කියනවා model එක කියලත්. එක වෙනම project එකක් 1. Open Visual Studio and File>> New Project 2. Fill the form as shown in picture [IMG]http://oi68.tinypic.com/sqnrt0.jpg[/IMG] [SIZE="4"][COLOR="green"]මේ වෙනකොට අපි solution එකක් හදලා නැනේ. මේකෙන් වෙන්නේ 1. Create a solution called “Gune” 2. Create Project name “Gune.Domain” ඒ කියන්නේ Gune කියන සොලුෂන් එක ඇතුලේ “Gune.Domain” කියන ප්රොජෙක්ට් එක තියෙනවා. මේකෙන් Namespace හොයාගන්න ලේසි වෙනවා. අපි ප්රෝජෙච්ට් 20 ක් විතර තියන solution එකක වැඩ කරනකොට මේක හුගක් වැදගත්. දැන් ඉතින් අපේ අර තියන Class 4 මේකට දාගන්න ඕනේ. මම නම් ඉතාමත් සරලව කරන්නේ. උබලාට ඕනේ නම් වැඩිපුර Fileds දාගෙන කරන්න. වැදගත් දෙයක් කියන්න ඕනේ. Class වල නම් දානකොට ඒක වචනෙන් දාන්න ඕනේ. මොකද EF එකෙන් එක බහු වචන කරලා තමා ටේබල් නේම් එක හදන්නේ. සහ CamelCase වලින් නම් තියෙන්න ඕනේ. විශේෂයෙන් ස්ටර්ටර් ලා මේවා හරියට පිළිපදින්න ඕනේ. නැත්නම් ගුටි කන්න වෙන්නේ . Code Clearance , Comments , Scope Clearance කියන ඒවා නිකන් ගෙවල් සුද්ද කරලා පිරිසිදු කරලා තියාගන්නවා වගේ කරන්න ඕනේ. මම නම් හදාගත්තේ මේ විදිහට. ඉස්සරහට යනකොට මේකේ Properties වැඩි කරන්න වෙනවා. [/COLOR][/SIZE] [IMG]http://oi67.tinypic.com/2i95j86.jpg[/IMG] [IMG]http://oi67.tinypic.com/2j5nhh3.jpg[/IMG] [IMG]http://oi64.tinypic.com/hvcwec.jpg[/IMG] [SIZE="5"]“Gune.Data” Project[/SIZE] [SIZE="4"][COLOR="green"]දැන් අපේ මොඩල් එක එහෙමත් නැත්නම් වැඩ කරන ඩොමෙන් එක හදලා ඉවරයි. දැන් තියෙන්නේ EF එකෙන් SQL server එකත් එක්ක ගනුදෙනු කරන එක. අපිට ඕනේ නම් පුළුවන් උඩින් කිව්වා Domain Project එකේම මේක කරන්න . එත් හැම දේම පිළිවෙලක් වෙන නිසා තමා මේක වෙනම Project එකකට ගත්තේ. අපි Entity Framework එක අපේ C# වලට දාගේම එක Configure කළා කියන්නේ අපේ ලග අර database එකේම කොපි එකක් තියනවා වගේ. හැබැයි ඩේටා නැතුව. එකට කියන්නේ “Schema Only” කියලා. බලමු කරන්නේ කොහොමද කියල. මුලින්ම අලුත් ප්රොජෙක්ට් එකක් හදන්නේ ඕනේ “Gune.Data” . මේකත් Class Library ටයිප් එකේ එකක්. [/COLOR][/SIZE] [IMG]http://oi63.tinypic.com/9jirgz.jpg[/IMG] [SIZE="5"]Install EF[/SIZE] [SIZE="4"][COLOR="green"]දැන් කරන්න ඕනේ මේකට Entity Framework එක ඉන්ස්ටෝල් කරන එක. එකට අපිට තියනවා නගෙට් පැකේජ් මැනේජර් (Nugget Package Manager) . කියන එක. මේක වෙන්නේ මෙහෙමයි. ලෝකේ වටේ ඉන්න දිවලොප් කරන ය එකතු වෙලා මේ වගේ ප්රයෝජනවත් කොම්පොනන්ට් හදලා තියනවා. ඒවා හුගක එකතුවක් තමා නගෙට් පැකේජ් මැනේජර් (Nugget Package Manager) කියන්නේ. අපි කරන්නේ එක හරහා එකේ තියන Entity Framework එක දාගන්න එක.[/COLOR][/SIZE] [IMG]http://oi66.tinypic.com/16otc6.jpg[/IMG] [SIZE="4"][COLOR="green"]ඕනෙම ප්රොජෙක්ට් එකක හෝ Solution eke 1. Right Click on solution or project. 2. select “Manage Nuget Packages” දැන් ඉහත ආකාරයට අදාළ එක සිලෙක්ට් කරගෙන ඉන්ස්ටෝල් බටන් එකෙන් ඉන්ස්ටෝල් කරගන්න ඕනේ [/COLOR][/SIZE] [SIZE="5"]Configure EF[/SIZE] [SIZE="4"][COLOR="Green"]හොදා දැන් කරන්න තියෙන්නේ අපේ EF එක configure කරගන්න එක. මේකෙදී 1. Add Class name “MainDBContext” to your Data Project 2. Inherite it with “DbContext” . DbContext is the most important class in the EntityFreamwork 3. Overide the base class constructor . DbContext කියන එක ගන්න බැරි නම් ඒ කියන්නේ EF එක ඉන්ස්ටෝල් වෙලා න කියන එක. [/COLOR][/SIZE] [IMG]http://oi67.tinypic.com/20f5dur.jpg[/IMG] [SIZE="4"][COLOR="green"]:Base(“SysCon”) කියන එකෙන් කලේ අර ඉන්හෙරිට් කරපු DbContext ක්ලාස් එකේ තියන Constructor එක Overide කළා . එහෙම කරන කොට එකට Connection String එකේ නම දෙන්න ඕනේ. මේකෙදි එකේ නම “SysCon”. දැන් මේ “SysCon” කියන Connection String එක ප්රොජෙක්ට් එකක Config File එකට දාන්න ඕනේ. දැනට අපි එකත් මේකෙම දාගන්නවා.මතක තියාගන්න EF එක මේ SysCon කියන එක හොයන්නේ “StartUp Project” එකේ Config ෆයිල් එකේ කියලා.[/COLOR][/SIZE] [SIZE="5"]Add “SysCon” to Config [/SIZE] [COLOR="green"][SIZE="4"]1. Open app.config file in Data Project 2. Add Connection string as Following figure [/SIZE][/COLOR] [IMG]http://oi63.tinypic.com/2822nnb.jpg[/IMG] [SIZE="4"][COLOR="green"]මේක නම් හුගක් දෙනෙක් දන්නවනේ. නොදන්නා ය අහන්න ඕනේ කියලා දෙන්නම්. මේකේ වෙන්න ඕනේ එකම දේ තමා name එක “SysCon”. වෙන්න ඕනේ එක. [B]DBSet [/B] දැන් මේ පුතිලා මෙහෙම හිතන්න ඕනේ. [B]MainDBContext[/B] එක කියන්නේ අපේ ප්රෝග්රෑම් එක ඇතුලේ [B]DetaBase[/B] එක වගේ. එහෙනම් කෝ එකේ Tables? අන්න එකට තමා මේ DbSet තියෙන්නේ. ඔයාලට පුළුවන් මේ [B]MainDBContext[/B] එක ඇතුලේ ඕනේ තරම් DbSet හදාගන්න . ඒ හදන හැම එකක්ම අවසානයේ SQL Server එකේ ටේබල් එකක් වෙනවා. හදන්නේ මෙහෙමයි [CODE]public DbSet<Customer> Customer { get; set; }[/CODE] මේ වගේ අර අනික් 4 ම හදාගන්න ඕනේ. මේ වගේ [/COLOR][/SIZE] [IMG]http://oi66.tinypic.com/skzuk3.jpg[/IMG] [SIZE="5"]හක්ක පනින වැඩේ (DB Migrations)[/SIZE] [SIZE="4"][COLOR="green"]දැන් පුතිලා අපි MainDBContext එක හැදුවා . එකේ DbSet 4 ක් හැදුවා . ඒ කියන්නේ SQL server එකේ ඩේටා බේස් එකක් හදලා එකේ ටේබල් 4 ක් හැදුවා වගේ. වැඩේ කියන්නේ තාම SQL දන්නේ නැ අපි මෙහෙම දෙයක් කළා කියලා. එකට අපි පොරට (SQL server) එකට කියන්න ඕනේ අපි මෙහෙම වැඩක් කරලා තියෙන්නේ කියලා. එකට තමා Migrate කරනවා කියන්නේ. කරන්න තියන වැඩේ සිම්පල්. මුලින්ම යන්න ඕනේ “Package Manager Console” එකට. එක ගන්න විධිහ පහත රුපෙන් පෙනේවි .[/COLOR][/SIZE] [IMG]http://oi63.tinypic.com/5ldirp.jpg[/IMG] [SIZE="4"][COLOR="green"]දැන් එකේ අපේ පලවෙනි කමාන්ඩ් එක රන් කරන්න ඕනේ එක තමා [CODE]enable-migrations[/CODE] මේක මේ විදිහටම තියෙන්න ඕනේ. වැරදුනොත් එහෙම රතු පාටින් ලේ ගංගාවක් ගැලුවා වගේ එයි. මේකෙන් වෙන්නේ අපි කියනවා දැන් අපි SQL එක්ක ගනුදෙනු කරන්න ලෑස්තියි කියලා. මේක රන් කලාම අපිට EF එකෙන් හදලා දෙනවා Configuration ෆයිල් එකක්. එකේ Constructor එකේ තියනවා [CODE]AutomaticMigrationsEnabled = false;[/CODE] කියලා . මේක True. කරන්න ඕනේ. ඒ කියන්නේ අපි කරන වෙනස් කම් automatically database එකට ගහන්න කියන එක සරලවම අන්තිම කමාන්ඩ් එක තමා [CODE]update-database -f -script[/CODE] -f කියන්නේ force කරලා වෙනස්කම් අප්ඩේට් කරන්න කියන එක. -script කියන්නේ අපිට හැදෙන SQL script එක පෙන්නන කියන එක. දැන් එනවා ලස්සන script එකක් ඔයාගේ ඔය C# ඇතුලේ හදපු schema එක ට අදාලව SQL script එක. –script ටැග් එක අයින් කරලා ආයි රන් කලොත් SQL Server එකේ Database එක හැදේවි [/COLOR][/SIZE] [IMG]http://oi68.tinypic.com/10ydpbn.jpg[/IMG] [SIZE="4"][COLOR="green"]ඔන්න දැන් අපි ඩේටාබේස් එක හැදුවා C# ඇතුලේ ඉගෙන. දැන් ඔයාල අර මොඩල් එකට මොනයම් හෝ වෙනසක් කලොත් [CODE]update-database –f [/CODE] වලින් ඒ වෙනසක් කම ඩේටා බේස් එකට දාගන්න පුළුවන්. [/COLOR][/SIZE] ========================================================================== [SIZE="5"]Repository(රෙපොසිටෝරි)[/SIZE] [COLOR="green"][SIZE="4"]දැන් තියන විදිහට ටයිප් කරන්න සැහෙන අමාරුයි. ඒ උනාට යමු ඉස්සරහට. අපි මුලින්ම කිව්වා විදිහට දැන් තමා ඔක්කොම එක තැනින් කරන මැජික් එක කරන්න යන්නේ. මුලින්ම අපි හදාගන්න ඕනේ අලුතින් ප්රොජෙක්ට් එකක් “Gune.Repository” රෙපොසිටෝරි එකක් කියන්නේ එකතුවක් නේ. ඉතින් මේ එකතුව අපි මුලින් හරියට පෙළ ගස්වා ගන්න ඕනේ. එකට අපිට තියනවා Interfaces කියලා ජාතියක්. හැමෝම මේක දානවා. Interfaces වල තියන හොද ගතිය අපිට එතැනදී මොකුත් දෙන්න ඕනේ න. ඔහේ මෙතඩ් හදාගෙන යන්න පුළුවන්. ඉතින් මේක පාවිච්චි කරලා අපි Template එකක් හදාගන්නවා වැඩේට හරියන්න. [/SIZE][/COLOR] [IMG]http://oi65.tinypic.com/30j6yhf.jpg[/IMG] [SIZE="4"][COLOR="green"] මේකේ මේ T කියන එක වෙනුවට අපිට ඕනේ එකක් පාස් කරන්න පුළුවන්. මම කරන්නේ ඕකට මුලින් දානවා මෙහෙම එකක්. [CODE]public class RepositoryBaseMain<T> : IRepositoryBase<T> where T : class[/CODE] දැන් මේ T එක වෙනුවට යවන්න පුළුවන් Class එකක් විතරයි. මේකට අපි කියනවා Constraints on type parameters කියලා වැඩි විස්තර සදහා. [url]https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/generics/constraints-on-type-parameters[/url] ඒ වගේම මේ T කතාව තේරුනේ නැත්නම් අහන්න ඕනේ. [/COLOR][/SIZE] [SIZE="5"]RepositoryBaseMain [/SIZE] [SIZE="4"][COLOR="green"]දැන් අරක පාවිච්චි කරලා අපේ ප්රදාන Repository එක හදාගන්න තමා යන්නේ. එකට කරන්න තියෙන්නේ අර හදාගත්ත Interface එක Implement කරන එක. මේ විදිහට කලාම හරි. [CODE]public class RepositoryBaseMain<T> : IRepositoryBase<T> where T : class[/CODE] මේකෙදි වෙන්නේ අර interface එකට අපි දාන Class එකම RepositoryBaseMain class එකටත් පාස් වෙනවා. අපි Customer පාස් කලොත් Customer RepositoryBaseMain ekak හැදෙන්නේ මෙන්න මේ වෙලාවේදී. interface එකක් implement කරන කොට එකේ තියන හැම method එකක්ම implement කරන්න ඕනේ. [/COLOR][/SIZE] [IMG]http://oi64.tinypic.com/2qa0jn9.jpg[/IMG] [SIZE="4"][COLOR="green"]දැන් අපිට තියෙන්නේ කලින් හදාගත්ත MainDbContext එක පාවිච්චි කරලා මේ මෙතඩ් ටික හරියට හදාගන්න එක.[/COLOR][/SIZE] [IMG]http://oi67.tinypic.com/e09x2.jpg[/IMG] [SIZE="4"][COLOR="green"]ඔන්න උඩින්ම DBContext එකෙන් instance එකක් හදාගත්තා. ඒ වගේම DBSet එකෙනුත් එකක් හදාගත්තා. මේ දෙකෙන් කියවෙන්නේ අර උඩින් එන T එක Customer nam DBSet<T> = Customer table මෙහෙම දැනට හිතාගන්න.[/COLOR][/SIZE] [SIZE="5"]Method Implementation[/SIZE] [SIZE="4"][COLOR="green"] දැනට මම පෙන්නනම් FindAll() මෙතොඩ් එක කොහොමද සම්පුර්ණ කරන්නේ කියලා. හරිම ලේසි දැන් අපිට තියනවා උඩින් එන ඕනෙම Class එකකට අදාළ වෙන ටේබල් එකක් [CODE]DBSet<T>[/CODE] ඉතින් මේකේ තියනවා අර ටේබල් එකේ තියන ඔක්කොම රෙකොර්ඩ්ස් . හරිම ලේසි [/COLOR][/SIZE] [IMG]http://oi68.tinypic.com/14t9cw2.jpg[/IMG] [SIZE="4"][COLOR="green"]ID එකෙන් find කරගන්න ඕනේ නම්[/COLOR][/SIZE] [IMG]http://oi66.tinypic.com/2cruhwi.jpg[/IMG] [SIZE="4"][COLOR="green"]මේකෙන් කලේ අර ටේබල් එකේ id එකෙන් Find එකක් ගැහුවා. ඒ කියන්නේ ලිස්ට් එකක Find එකක් වගේ[/COLOR][/SIZE] [SIZE="5"]මේක පාවිච්චි කරන විදිහ[/SIZE] [IMG]http://oi68.tinypic.com/5ey5nq.jpg[/IMG] [COLOR="Green"][SIZE="4"][COLOR="Indigo"]1. ලයින් 26 න පෙන්නේ අපි අර “Gune.Data” ප්රොජෙක්ට් එකේ හදාගත්ත MainDbContext එකෙන් instance එකක් හදාගත්තා. ඒ කියන්නේ ඩේටා බේස් එක අතේ තියනවා වගේ. 2. RepositoryBaseMain කිව්වේ අර කොල්ලෝ දෙන්නෙක් ලදී දෙවිදිහකට ඉන්න කෙල්ලෙක් වගේ . එකේ T මගුල වෙනුවට මෙතැනදී අපි දුන්නේ Customer Class එක. දැන් පේනවද? ඊලග ලයින් එකෙන් තියෙන්නේ ඔක්කොම Customar la ගන්න එක. මොකද අපි ඇතුලට දෙන type එකෙන් තමා අපහු පිටට result denne 3. ඒ වගේම එකෙන්ම අපි එක රෙකොර්ඩ් එකක් ගත්තා. 4. ඔන්න දැන් කෙල්ල වෙස් මාරු කළා. දැන් දාගත්තා product කියන වෙස් මුණ. දැන් ඉතින් එලියට එන හැම එකම සහ ඇතුලට යන හැම එකම product එකක් හෝ ගොඩක් මේ මුල අත රිදෙනවා බන් දැන්. ඕනේ කම තිබ්බට සිංහලෙන් කොටන රගේ අද තමා දැනුනේ. මේකේ අනන්තවත් ප්රශ්න ඇති ඒවා අහන්න ඕනේ. මේකේ පාඩම් අංක දෙක. Data Access With Dapper and Web-API Services Project Source Code eka passe dannam ජය [/COLOR][/SIZE][/COLOR] [/QUOTE]
Insert quotes…
Verification
Haya warak paha keeyada? (haya wadi kireema paha)
Post reply
Top
Bottom