The application will follow an MVC architecture. By separating the concerns between business logic, database, and front-end features, each component can be developed independently and could theoretically be changed out for a different technology at a later date.
With the Repository pattern, we create an abstraction layer between the data access and the business logic layer of an application.
Querying: Converts LINQ-to-Entities queries to SQL query and sends them to the database.
Change Tracking: Keeps track of changes that occurred on the entities after querying from the database.
Persisting Data: Performs the Insert, Update and Delete operations to the database, based on entity states.
Caching: Provides first level caching by default. It stores the entities which have been retrieved during the life time of a context class.
Manage Relationship: Manages relationships using CSDL, MSL and SSDL in Db-First or Model-First approach, and using fluent API configurations in Code-First approach.
Object Materialization: Converts raw data from the database into entity objects.
A SQL database will store product data, user information, and order details.
When a user requests a product page, it will be generated dynamically from current data in the database.
Shopping cart information can be saved for as long as needed because it is saved in the database,
giving the user the ability to view their cart anywhere and across devices.
Administrators will have separate accounts enabling CRUD operations on the database.
MailKit is an Open Source cross-platform .NET mail-client library that is based on MineKit and optimized for mobile devices.
> dotnet add package MailKit --version 2.1.4
ASP.NET Core is a cross-platform, high-performance, open-source framework for building modern, cloud-based, Internet-connected applications.
> dotnet add package Microsoft.AspNetCore.App --version 2.2.0
Razor is a markup syntax for adding server-side logic to web pages. This package contains MSBuild support for Razor.
> dotnet add package Microsoft.AspNetCore.Razor.Design --version 2.1.9
Code Generation tool for ASP.NET Core. Contains the dotnet-aspnet-codegenerator command used for generating controllers and views.
> dotnet add package Microsoft.VisualStudio.Web.CodeGeneration.Design --version 2.1.9
ML.NET is a cross-platform open-source machine learning framework which makes machine learning accessible to .NET developers.
> dotnet add package Microsoft.ML --version 1.1.0
LIBMF, the core computation library for matrix factorization in ML.NET
> dotnet add package Microsoft.ML.Recommender --version 0.13.0