What Have I Learnt Programming an ASP.NET Core Web App? (Library Management System) Part 1
ASP.NET is a web development framework for Windows only; its initial release was 17 years ago. The much newer ASP.NET Core is also a web development framework. However, it is cross-platform and runs a lot faster than the old ASP.NET applications.
What is an LMS — Library Management System?
A Library Management System, which I will refer to as LMS, is an Administration tool for owners of bookstores or public libraries, to manage their books, subscribers, and branches and more.
It is allowing them to track books, to see whether it is available at a different branch/store. Furthermore, keeping records on whether their members/subscribers have any outstanding payments and the books they’ve borrowed.
Why did I choose to make an LMS?
I’ve been looking for a project to put on my portfolio, which makes a good portfolio project.
This project allows me to work with SQL. As a NodeJS developer, the standard database is MongoDB(NoSQL). Working on this project requires me to manipulate data in different tables.
ASP.NET Core typically uses the MVC(Model-View-Controller) design pattern/architecture. MVC is also the same design pattern used with Express for NodeJS.
I also used the repository design pattern which I will mention later in the “Finally, What Have I Learnt?” section.
Building an LMS opens up the challenge to write an MVC application while trying to keep the codebase organised and tidy.
.NET & .NET Core Framework
Where I’m at with the LMS?
I would say I’m a third of the way there. Only the Library controller works as of now. However, I will publish part 2 and 3 of this series for the Subscribers and Branches controller.
View code on GitHub: https://github.com/samsonnagamani/LMS
Finally, What Have I Learnt?
Connecting to SQL Server and any Database server can be confusing
When I started this project, I spent the better part of three days figuring out how to connect and interact with SQL Server. The first couple of tutorials I’ve watched, using code that did not seem to scale well. However, after researching more, I started using dependency injections, which is very scalable.
The Repository Design Pattern
A design pattern I learnt while making an LMS is the Repository Design Pattern. I won’t go into much detail, but in simple terms, there are three files.
Model.cs is where you define a model.
IModel.cs is the interface for Model, defines what the methods are called, along with what it returns, and its input parameters are.
MockModel.cs are where all the business logic of the projects is stored. In my case, I dependency injected the DB context into this file to have CRUD functionality with the database records.
That’s all I have, for now, I will continue working on this project, and will release a part 2, for the Branches Controller and part 3 for the Subscribers Controller hopefully.
Check out my GitHub repository the code here: https://github.com/samsonnagamani/LMS
And it’s much appreciated for any constructive criticism and a clap.