- Notifications
You must be signed in to change notification settings - Fork6
One Solution - One Project for web application development with Asp.Net Core & EF.Core. Only one web application project which used aspnetcore components; razor pages, middlewares, dependency injection, configuration, logging. To create websites with minimum implementation of asp.net core based on HTML5, CSS, and JavaScript. You can use this boi…
License
aspnetrun/run-aspnetcore-basics_retired
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
Astarter kit for your nextASP.NET Core web application. Boilerplate forASP.NET Core reference application withEntity Framework Core, demonstrating a layered application architecture with DDD best practices. Implements NLayerHexagonal architecture (Core, Application, Infrastructure and Presentation Layers) andDomain Driven Design (Entities, Repositories, Domain/Application Services, DTO's...)and aimed to be aClean Architecture, with applyingSOLID principles in order to use for a project template.Also implementsbest practices likeloosely-coupled, dependency-inverted architecture and usingdesign patterns such asDependency Injection, logging, validation, exception handling, localization and so on.
You can check full repository documentations and step by step development of100+ page e-book PDF from here -https://aspnetrun.azurewebsites.net/Discover. Also detail introduction of book and project structure exists onmedium aspnetrun page. You can followaspnetrun repositories for buildingstep by step asp.net coreweb development skills.
Here you can find all of theaspnetrun repositories from easy to difficult, Also this list can be track alearning path of asp.net core respectively;
- run-aspnetcore-basic - intended to building fastest ASP.NET Core Default Web Application template. This solutiononly one solution one project foridea generation with Asp.Net Core.
- run-aspnetcore - intended to building Multi-Page Web Applications(MPA) using ASP.NET Core & EF.Core inClean Architecture with default aspnet core server-side rendering approach.
- run-aspnetcore-angular - intended to building Single-Page Web Applications(SPA) using ASP.NET Core & EF.Core, Web API Project andAngular for frontend framework.
And there are crucial repositories which areimplemented base repository andapplying real-world examples with developing new enterprice features for example Identity, Paging, Localization etc..
- run-aspnetcore-basic-realworld - implemented this repository and buildsample of eCommerce reference application on Default ASP.NET Core in aone solution one project for fastest idea implementations.
- run-aspnetcore-realworld - implemented run-aspnetcore repository and buildsample of eCommerce reference application on Multi-Page Web Applications(MPA) using ASP.NET Core Razor Pages templates.
- run-aspnetcore-angular-realworld - implemented run-angular repository and buildsample of eCommerce reference application on Single Page Web Application(SPA) architecture usingASP.NET Core + Angular.
These repositories areupdated regularly. We are following Microsoft Web Technologies very closely so we will update all these repositories accordingly withMicrosoft Web Application stacks.
Here is CRUD operations of aspnetrun-core-basic template project;
AspnetRunBasic has onlyone solution and into this solution onlyone web application project with Asp.Net Core & EF.Core which used aspnetcore components;razor pages, middlewares, dependency injection, configuration, logging. To create websites with minimum implementation of asp.net core based onHTML5, CSS, and JavaScript. You can use this boilerplate forfast implementation, minimum development, bootstrap your idea, create Minimum Viable Product (MVP), idea validation, startup development implementation for a limited time and limited resources with using latest asp.net core and entity framework core.
If you liked the project or if AspnetRun helped you, pleasegive a star. And also pleasefork this repository and send uspull-requests. If you find any problem please openissue.
Use these instructions to get the project up and running.
You will need the following tools:
- Visual Studio 2019
- .Net Core 3.0 or later
- EF Core 3.0 or later
Follow these steps to get your development environment set up:
- Clone the repository
- At the root directory, restore required packages by running:
dotnetrestore
- Next, build the solution by running:
dotnetbuild
- Next, within the AspnetRun.Web directory, launch the back end by running:
dotnetrun
- Launchhttp://localhost:5400/ in your browser to view the Web UI.
If you haveVisual Studio after cloning Open solution with your IDE, AspnetRun.Web should be the start-up project. Directly run this project on Visual Studio withF5 or Ctrl+F5. You will see index page of project, you can navigate product and category pages and you can perform crud operations on your browser.
After cloning or downloading the sample you should be able to run it using an In Memory database immediately. The default configuration of Entity Framework Database is"InMemoryDatabase".If you wish to use the project with a persistent database, you will need to run its Entity Framework Coremigrations before you will be able to run the app, and update the ConfigureDatabases method inStartup.cs (see below).
publicvoidConfigureDatabases(IServiceCollectionservices){//// use in-memory database//services.AddDbContext<AspnetRunContext>(c =>// c.UseInMemoryDatabase("AspnetRunConnection"));// add real database dependecyservices.AddDbContext<AspnetRunContext>(c=>c.UseSqlServer(Configuration.GetConnectionString("AspnetRunConnection")));}
Ensure your connection strings in
appsettings.json
point to a local SQL Server instance.Open a command prompt in the Web folder and execute the following commands:
dotnetrestoredotnet ef database update-c AspnetRunContext
Or you can direct call ef commands from Visual StudioPackage Manager Console. Open Package Manager Console, set default project to AspnetRun.Infrastructure and run below command;
update-database
These commands will create aspnetrun database which include Product and Category table. You can see fromAspnetRunContext.cs.
- Run the application.The first time you run the application, it will seed aspnetrun sql server database with a few data such that you should see products and categories.
If you modify-change or add new some of entities to Core project, you should run ef migrate commands in order to update your database as the same way but below commands;
add-migration YourCustomEntityChangesupdate-database
run-aspnetcore-basic is a general purpose to implement theDefault Web Application template of .Net withone solution one project for fastest idea implementations to building modern web applications with latest ASP.NET Core & EF Core technologies.
Repository include folders for group implementations;
- Data
- AspnetRunContext
- AspnetRunContextSeed
- Entities
- Product
- Category
- Migrations
- Generated by scaffolding from ef.core
- Pages
- Default Razor Web Application Template of Asp.Net Core
- Repositories
- IProductRepository
- ProductRepository
- wwwroot
- Startup.cs
- Program.cs
IncludesEntity Framework Core Context and tables in this folder. When new entity created, it should add to context and configure in context.The Infrastructure project depends on Microsoft.EntityFrameworkCore.SqlServer and EF.Core related nuget packages, you can check nuget packages of Infrastructure layer. If you want to change your data access layer, it can easily be replaced with a lighter-weight ORM like Dapper.
EF add-migration classes.
EF Repository implementation. This class responsible to create queries, includes, where conditions etc..
Includes Entity Framework Core Entities which creates sql table withEntity Framework Core Code First Aproach. Some Aggregate folders holds entity and aggregates.You can see example ofcode-first Entity definition as below;
publicclassProduct{publicintId{get;set;}[Required,StringLength(80)]publicstringName{get;set;}[Required,StringLength(255)]publicstringDescription{get;set;}publicintUnitPrice{get;set;}publicintCategoryId{get;set;}publicCategoryCategory{get;set;}}
Implementation of Core interfaces in this project withEntity Framework Core and other dependencies.Most of your application's dependence on external resources should be implemented in classes defined in the Infrastructure project. These classes must implement the interfaces defined in Core. If you have a very large project with many dependencies, it may make sense to have more than one Infrastructure project (eg Infrastructure.Data), but in most projects one Infrastructure project that contains folders works well.This could be includes, for example,e-mail providers, file access, web api clients, etc. For now this repository only dependend sample data access and basic domain actions, by this way there will be no direct links to your Core or UI projects.
publicinterfaceIProductRepository{Task<IEnumerable<Product>>GetProductListAsync();Task<Product>GetProductByIdAsync(intid);Task<IEnumerable<Product>>GetProductByNameAsync(stringname);Task<IEnumerable<Product>>GetProductByCategoryAsync(intcategoryId);Task<Product>AddAsync(Productproduct);TaskUpdateAsync(Productproduct);TaskDeleteAsync(Productproduct);Task<IEnumerable<Category>>GetCategories();}
Also implementation located same places in order to choose different implementation at runtime when DI bootstrapped.
publicclassProductRepository:IProductRepository{protectedreadonlyAspnetRunContext_dbContext;publicProductRepository(AspnetRunContextdbContext){_dbContext=dbContext??thrownewArgumentNullException(nameof(dbContext));}publicasyncTask<IEnumerable<Product>>GetProductListAsync(){returnawait_dbContext.Products.ToListAsync();}publicasyncTask<Product>GetProductByIdAsync(intid){returnawait_dbContext.Products.Include(p=>p.Category).FirstOrDefaultAsync(p=>p.Id==id);}
Development of UI Logic with implementation. Interfaces drives business requirements and implementations in this layer.The application's mainstarting point is the ASP.NET Core web project. This is a classical console application, with a public static void Main method in Program.cs. It currently uses the defaultASP.NET Core project template which based onRazor Pages templates. This includes appsettings.json file plus environment variables in order to stored configuration parameters, and is configured in Startup.cs.
- Asp.Net Core
- Entity Framework Core
- Razor Pages
- Scaffolding Razor
- Tag Helpers
- Bindings
- Model Validations
- Navigation - Page Routes
- User Interfaces
- Partial Views
- View Components
- Razor Sections
- Dynamic Layout
- Middlewares
- Logging
- Configuration
- Dependency Injection
***Most of these features implemented on real-world repository of this repos.Check for real-world examples.
The wwwroot folder in the ASP.NET Core project is treated as a web root folder. Static files can be stored in any folder under the web root and accessed with a relative path to that root.
In the standard ASP.NET application, static files can be served from the root folder of an application or any other folder under it. This has been changed in ASP.NET Core. Now, only those files that are in the web root - wwwroot folder can be served over an http request. All other files are blocked and cannot be served by default.
ASP.NET Core web application is actually a console project which starts executing from the entry point public static void Main() in Program class where we can create a host for the web application.
ASP.NET Core application must include Startup class. It is like Global.asax in the traditional .NET application. As the name suggests, it is executed first when the application starts.
- .NET Core 3.0
- ASP.NET Core 3.0
- Entity Framework Core 3.0
- .NET Core Native DI
- Razor Pages
- AutoMapper
- Asp.Net Core
- Entity Framework Core
- Razor Pages
- Repository Design Pattern
- Multiple Page Web Application (MPA)
- Monolitic Deployment Architecture
- SOLID and Clean Code
- This repository is not intended to be a definitive solution.
- This repository not implemented a lot of 3rd party packages, we are try to avoid the over engineering when building on best practices.
- Beware to use in production way.
Please readContributing.md for details on our code of conduct, and the process for submitting pull requests to us.
We useSemVer for versioning. For the versions available, see thetags on this repository.
For information on upcoming features and fixes, take a look at theproduct roadmap.
This project is deployed on Azure. See the project running on Azure inhere.
Please fork this repository, and send me your findings with pull-requests. This is open-source repository so open to contributions.
- Mehmet Ozkaya -Initial work -mehmetozkaya
See also the list ofcontributors who participated in this project.
This project is licensed under the MIT License - see theLICENSE.md file for details
About
One Solution - One Project for web application development with Asp.Net Core & EF.Core. Only one web application project which used aspnetcore components; razor pages, middlewares, dependency injection, configuration, logging. To create websites with minimum implementation of asp.net core based on HTML5, CSS, and JavaScript. You can use this boi…
Topics
Resources
License
Uh oh!
There was an error while loading.Please reload this page.
Stars
Watchers
Forks
Releases
Packages0
Uh oh!
There was an error while loading.Please reload this page.