这是在现实世界电子商务Web应用程序项目上实现Aspnetrun核基准模板;
Aspnetrunbasicrealworld只有一个解决方案,并且仅使用ASP.NET Core&ef.core使用ASPNETCORE组件的一个Web应用程序项目;剃刀页,中间Wares,依赖注入,配置,记录。创建基于HTML5,CSS和JavaScript的最小实现ASP.NET Core的网站。您可以使用此样板进行快速实施,最小开发,引导您的想法,创建最低可行产品(MVP),IDEA验证,有限时间的启动开发实现以及使用最新的ASP.NET核心和实体框架核心使用有限的资源。
什么是Aspnetrun?
利用ASP.NET核心技能的最佳途径。登机到完整的堆栈.NET核心开发人员作业。带有实体框架核心的ASP.NET核心参考应用程序的样板,展示了具有DDD最佳实践的分层应用程序体系结构。实现Nlayer六角形体系结构(核心,应用程序,基础架构和演示层)和域驱动的设计(实体,存储库,域/应用程序服务,DTO …),并旨在成为一种清洁的体系结构,并应用固有的原理,以便用于项目模板。还实现了最佳实践,例如松散耦合,依赖性的体系结构以及使用依赖注入,记录,验证,异常处理,本地化等的设计模式。
您可以从此处检查完整的存储库文档,并逐步开发100+页的电子书PDF -https: //aspnetrun.azurewebsites.net 。还详细介绍了书本和项目结构的介绍中,在中等ASPNETRUN页面上。您可以关注Aspnetrun存储库,以逐步构建ASP.NET核心网络开发技能。
Aspnetrun存储库
在这里,您可以从易于到困难找到所有ASPNErun存储库,此列表也可以分别跟踪ASP.NET核心的学习路径。
- RUN-ASPNETCORE-BASICS-构建最快的ASP.NET核心默认Web应用程序模板。该解决方案只有一个解决方案一个通过ASP.NET核心进行想法生成的项目。
- run –aspnetcore–使用实体框架构建ASP.NET核心Web应用程序。CORE并使用DDD最佳实践应用干净的体系结构。
- Run-AspnetCore-CQRS-使用ASP.NET Core&Ef.Core,Web API项目构建单页Web应用程序(SPA),并实现CQRS设计模式。
- RUN-ASPNETCORE-MICROSERVICES-在.NET平台上构建微服务,该平台使用ASP.NET Web API,Docker,RabbitMQ,Ocelot API Gateway,Mongodb,Redis,SQLServer,Entity Core Core,CQR,CQR和CLECTERTENTION 。
什么包括在此存储库中
我们已经在Run-Appnetcore-Basic样板模板上实现了以下功能。您可以将现实世界的功能作为您的业务需求更改;
- Bootstrap4主题实现
- ASP.NET核心内置依赖注入
- 身份和身份配置
- 产品页面授权
- ASPNET核心剃须刀工具 – 查看组件,部分视图,标签助手,模型绑定和验证,剃须刀部分等。
给星星!
如果您喜欢该项目或Aspnetrun对您有所帮助,请给明星。还请提供此存储库,并向我们发送plupquequests 。如果您发现任何问题,请打开问题。
入门
使用这些说明使项目启动并运行。
先决条件
您将需要以下工具:
- Visual Studio 2019
- .NET Core 3.0或更高版本
- EF Core 3.0或更高版本
安装
请按照以下步骤设置开发环境:
- 克隆存储库
- 在根目录中,通过运行来还原所需的软件包:
dotnet restore
- 接下来,通过运行构建解决方案:
dotnet build
- 接下来,在aspnetrun.web目录中,通过运行启动后端:
dotnet run
- 启动http:// localhost:5400/在您的浏览器中查看Web UI。
如果您使用IDE克隆开放解决方案后拥有Visual Studio ,则Aspnetrun.web应该是启动项目。直接使用F5或CTRL+F5在Visual Studio上直接运行该项目。您将看到项目的索引页面,可以导航产品和类别页面,并且可以在浏览器上执行CRUD操作。
用法
克隆或下载示例后,您应该能够立即使用内存数据库运行它。实体框架数据库的默认配置是“ inmemorydatabase” 。如果您希望使用持久数据库的项目使用该项目,则需要在能够运行该应用程序之前运行其实体框架核心迁移,并在startup.cs中更新configuredatabases方法(请参见下文)。
public void ConfigureDatabases ( IServiceCollection services ) { //// use in-memory database //services.AddDbContext<AspnetRunContext>(c => // c.UseInMemoryDatabase(\"AspnetRunConnection\")); // add real database dependecy services . AddDbContext < AspnetRunContext > ( c => c . UseSqlServer ( Configuration . GetConnectionString ( \"AspnetRunConnection\" ) ) ) ; }
-
确保您在
appsettings.json中的连接字符串指向本地SQL Server实例。 -
在Web文件夹中打开命令提示符并执行以下命令:
dotnet restore dotnet ef database update - c AspnetRunContext
或者,您可以从Visual Studio Package Manager Console指导呼叫EF命令。打开软件包管理器控制台,将默认项目设置为aspnetrun.infrastructure,并在命令下运行;
update - database
这些命令将创建包括产品和类别表的Aspnetrun数据库。您可以从Aspnetruncontext.cs看到。
- 运行应用程序。您第一次运行应用程序时,它将用一些数据播种Aspnetrun SQL Server数据库,以便您看到产品和类别。
如果您修改 – 更改或添加新的一些实体到核心项目,则应运行EF迁移命令,以便以相同的方式更新数据库,但下面是命令;
add - migration YourCustomEntityChanges update - database
项目结构
run-aspnetcore-Basic是使用一个解决方案一个项目实现.NET的默认Web应用程序模板的通用目的,以使用最新的ASP.NET Core&EF Core Technologies来构建现代Web应用程序。
存储库包括用于组实现的文件夹;
- 数据
- Aspnetruncontext
- Aspnetruncontextseed
- 实体
- 产品
- 类别
- 迁移
- 由ef.core产生的
- 页面
- ASP.NET Core的默认剃须刀Web应用程序模板
- 存储库
- iProductrepository
- productertository
- wwwroot
- startup.cs
- program.cs
数据文件夹
在此文件夹中包括实体框架核心上下文和表。当创建新实体时,应添加到上下文中并在上下文中配置。基础架构项目取决于微软。 EntityFrameWorkCore.SQLServer和EF.Core相关的Nuget软件包,您可以检查基础结构层的Nuget软件包。如果要更改数据访问层,可以很容易地用像Dapper这样的较轻的ORM代替。
迁移
EF添加移民课。
存储库
EF存储库实现。该类负责创建查询,包括,条件等。
实体文件夹
包括实体框架核心实体,该实体可创建使用实体框架核心代码的SQL表First abreach 。一些聚合文件夹保存实体和聚合。您可以在下面看到代码优先实体定义的示例;
public class Product { public int Id { get ; set ; } [ Required , StringLength ( 80 ) ] public string Name { get ; set ; } [ Required , StringLength ( 255 ) ] public string Description { get ; set ; } public int UnitPrice { get ; set ; } public int CategoryId { get ; set ; } public Category Category { get ; set ; } }
存储库文件夹
该项目与实体框架核心和其他依赖关系中的核心接口实现。应用程序对外部资源的依赖大部分都应在基础架构项目中定义的类中实现。这些类必须实现核心中定义的接口。如果您有一个非常大的项目具有许多依赖项,那么拥有一个以上的基础架构项目(例如基础架构.data)可能是有意义的,但是在大多数项目中,一个包含文件夹效果很好的基础架构项目。这可以包括,例如,电子邮件提供商,文件访问,Web API客户端等。目前,此存储库仅依赖示例数据访问和基本域操作,这样就不会直接链接到您的核心或UI项目。
public interface IProductRepository { Task < IEnumerable < Product > > GetProductListAsync ( ) ; Task < Product > GetProductByIdAsync ( int id ) ; Task < IEnumerable < Product > > GetProductByNameAsync ( string name ) ; Task < IEnumerable < Product > > GetProductByCategoryAsync ( int categoryId ) ; Task < Product > AddAsync ( Product product ) ; Task UpdateAsync ( Product product ) ; Task DeleteAsync ( Product product ) ; Task < IEnumerable < Category > > GetCategories ( ) ; }
同样,实现同一位置,以便在DI Boottrapter时在运行时选择不同的实现。
public class ProductRepository : IProductRepository { protected readonly AspnetRunContext _dbContext ; public ProductRepository ( AspnetRunContext dbContext ) { _dbContext = dbContext ?? throw new ArgumentNullException ( nameof ( dbContext ) ) ; } public async Task < IEnumerable < Product > > GetProductListAsync ( ) { return await _dbContext . Products . ToListAsync ( ) ; } public async Task < Product > GetProductByIdAsync ( int id ) { return await _dbContext . Products . Include ( p => p . Category ) . FirstOrDefaultAsync ( p => p . Id == id ) ; }
页面文件夹
通过实施开发UI逻辑。界面可以在此层中推动业务需求和实施。应用程序的主要起点是ASP.NET核心Web项目。这是一个经典的控制台应用程序,在program.cs中具有公共静态空隙主要方法。当前,它使用基于剃须刀页面模板的默认ASP.NET核心项目模板。这包括AppSettings.json文件加环境变量以存储配置参数,并在startup.cs中配置。
使用的组件
- ASP.NET核心
- 实体框架核心
- 剃刀页
- 脚手架剃须刀
- 标签助手
- 绑定
- 模型验证
- 导航 – 页面路线
- 用户界面
- 部分视图
- 查看组件
- 剃刀部分
- 动态布局
- 中间
- 记录
- 配置
- 依赖注入
***在此存储库的实际存储库上实现的大多数这些功能。检查现实世界示例。
wwwroot文件夹
ASP.NET Core Project中的wwwroot文件夹被视为Web根文件夹。静态文件可以存储在Web根部下的任何文件夹中,并使用该根的相对路径访问。
在标准ASP.NET应用程序中,可以从应用程序的根文件夹或其下方的任何其他文件夹中提供静态文件。这已在ASP.NET核心中进行了更改。现在,只能通过HTTP请求提供WWWROOT文件夹中WWWROOT文件夹中的那些文件。所有其他文件都被阻止,默认情况下不能提供。
program.cs
ASP.NET Core Web应用程序实际上是一个游戏机项目,它开始从程序类中的入口点public static void main()在该程序类中执行,我们可以在其中为Web应用程序创建一个主机。
startup.cs
ASP.NET核心应用程序必须包括启动类。它就像传统.NET应用中的Global.asax一样。顾名思义,应用程序启动时首先执行。
技术
- .NET Core 3.0
- ASP.NET Core 3.0
- 实体框架核心3.0
- .NET核心本地DI
- 剃刀页
- 汽车应用程序
主要对象
- ASP.NET核心
- 实体框架核心
- 剃刀页
- 存储库设计模式
- 多页Web应用程序(MPA)
- 单层部署体系结构
- 固体和干净的代码
免责声明
- 该存储库并不是要成为确定的解决方案。
- 该存储库未实施很多第三方软件包,我们正在尽力避免在建立最佳实践时进行过度的工程。
- 当心以生产方式使用。
贡献
请阅读有关我们的行为准则的详细信息以及向我们提交拉的请求的过程的详细信息。
版本控制
我们使用SEMVER进行版本控制。有关可用的版本,请参见此存储库上的标签。
接下来发行和roapmap
有关即将到来的功能和修复的信息,请查看产品路线图。
部署 – 在线aspnetrun
该项目部署在Azure上。请参阅此处在Azure上运行的项目。
拉力重quest
请为此存储库提供,然后将您的发现发送带有拉力重新要求。这是开源存储库,因此可以对贡献开放。
作者
- Mehmet Ozkaya-初始工作-Mehmetozkaya
另请参阅参与该项目的贡献者列表。
执照
该项目已根据MIT许可证获得许可 – 有关详细信息,请参见许可证文件。
