├── CSharp ├── AsyncAwait │ ├── .vs │ │ └── AsyncExample │ │ │ ├── DesignTimeBuild │ │ │ └── .dtbcache.v2 │ │ │ └── v16 │ │ │ └── .suo │ ├── AsyncExample.sln │ └── AsyncExample │ │ ├── AsyncExample.csproj │ │ ├── AsyncExample.csproj.user │ │ ├── Contents.cs │ │ ├── Form1.Designer.cs │ │ ├── Form1.cs │ │ ├── Form1.resx │ │ ├── Helper.cs │ │ └── Program.cs ├── AsyncAwaitAdvance │ ├── .vs │ │ └── ValueTaskDemo │ │ │ ├── DesignTimeBuild │ │ │ └── .dtbcache.v2 │ │ │ └── v16 │ │ │ └── .suo │ ├── ValueTaskDemo.sln │ └── ValueTaskDemo │ │ ├── Program.cs │ │ └── ValueTaskDemo.csproj ├── DependencyInjection │ ├── .vs │ │ └── DependencyInjection │ │ │ ├── DesignTimeBuild │ │ │ └── .dtbcache.v2 │ │ │ ├── config │ │ │ └── applicationhost.config │ │ │ └── v16 │ │ │ └── .suo │ ├── DependencyInjection.sln │ └── DependencyInjection │ │ ├── Controllers │ │ └── HomeController.cs │ │ ├── DependencyInjection.csproj │ │ ├── DependencyInjection.csproj.user │ │ ├── Models │ │ ├── ErrorViewModel.cs │ │ └── IdModel.cs │ │ ├── Program.cs │ │ ├── Properties │ │ └── launchSettings.json │ │ ├── Services │ │ ├── DependencyService.cs │ │ ├── IService.cs │ │ ├── ScopedService.cs │ │ ├── SingletonService.cs │ │ └── TransientService.cs │ │ ├── Startup.cs │ │ ├── Views │ │ ├── Home │ │ │ ├── Index.cshtml │ │ │ ├── Scoped.cshtml │ │ │ ├── Singleton.cshtml │ │ │ └── Transient.cshtml │ │ ├── Shared │ │ │ ├── Error.cshtml │ │ │ ├── _Layout.cshtml │ │ │ └── _ValidationScriptsPartial.cshtml │ │ ├── _ViewImports.cshtml │ │ └── _ViewStart.cshtml │ │ ├── appsettings.Development.json │ │ ├── appsettings.json │ │ └── wwwroot │ │ ├── css │ │ └── site.css │ │ ├── favicon.ico │ │ ├── js │ │ └── site.js │ │ └── lib │ │ ├── bootstrap │ │ ├── LICENSE │ │ └── dist │ │ │ ├── css │ │ │ ├── bootstrap-grid.css │ │ │ ├── bootstrap-grid.css.map │ │ │ ├── bootstrap-grid.min.css │ │ │ ├── bootstrap-grid.min.css.map │ │ │ ├── bootstrap-reboot.css │ │ │ ├── bootstrap-reboot.css.map │ │ │ ├── bootstrap-reboot.min.css │ │ │ ├── bootstrap-reboot.min.css.map │ │ │ ├── bootstrap.css │ │ │ ├── bootstrap.css.map │ │ │ ├── bootstrap.min.css │ │ │ └── bootstrap.min.css.map │ │ │ └── js │ │ │ ├── bootstrap.bundle.js │ │ │ ├── bootstrap.bundle.js.map │ │ │ ├── bootstrap.bundle.min.js │ │ │ ├── bootstrap.bundle.min.js.map │ │ │ ├── bootstrap.js │ │ │ ├── bootstrap.js.map │ │ │ ├── bootstrap.min.js │ │ │ └── bootstrap.min.js.map │ │ ├── jquery-validation-unobtrusive │ │ ├── LICENSE.txt │ │ ├── jquery.validate.unobtrusive.js │ │ └── jquery.validate.unobtrusive.min.js │ │ ├── jquery-validation │ │ └── dist │ │ │ ├── additional-methods.js │ │ │ ├── additional-methods.min.js │ │ │ ├── jquery.validate.js │ │ │ └── jquery.validate.min.js │ │ └── jquery │ │ ├── LICENSE.txt │ │ └── dist │ │ ├── jquery.js │ │ ├── jquery.min.js │ │ └── jquery.min.map └── DependencyInversion │ ├── .vs │ └── DependencyInversion │ │ ├── DesignTimeBuild │ │ └── .dtbcache.v2 │ │ └── v16 │ │ └── .suo │ ├── DependencyInversion.sln │ └── DependencyInversion │ ├── Bread.cs │ ├── Breakfast.cs │ ├── BreakfastMaker.cs │ ├── Coffee.cs │ ├── CoffeeBean.cs │ ├── CoffeeMachine.cs │ ├── DependencyInversion.csproj │ ├── ICoffeeMachine.cs │ ├── IToaster.cs │ ├── Milk.cs │ ├── Program.cs │ └── Toaster.cs ├── Concurrency └── ContosoUniversity │ ├── .vs │ └── ContosoUniversity │ │ ├── DesignTimeBuild │ │ └── .dtbcache.v2 │ │ ├── config │ │ └── applicationhost.config │ │ └── v16 │ │ └── .suo │ ├── ContosoUniversity.sln │ └── ContosoUniversity │ ├── ContosoUniversity.csproj │ ├── ContosoUniversity.csproj.user │ ├── Controllers │ └── HomeController.cs │ ├── CoursesController.cs │ ├── Data │ ├── DbInitializer.cs │ └── SchoolContext.cs │ ├── DepartmentsController.cs │ ├── InstructorsController.cs │ ├── Migrations │ ├── 20210904222846_InitialCreate.Designer.cs │ ├── 20210904222846_InitialCreate.cs │ ├── 20210904223201_MaxLengthOnNames.Designer.cs │ ├── 20210904223201_MaxLengthOnNames.cs │ ├── 20210905021338_ComplexDataModel.Designer.cs │ ├── 20210905021338_ComplexDataModel.cs │ ├── 20210905051924_RowVersion.Designer.cs │ ├── 20210905051924_RowVersion.cs │ └── SchoolContextModelSnapshot.cs │ ├── Models │ ├── Course.cs │ ├── CourseAssignment.cs │ ├── Department.cs │ ├── Enrollment.cs │ ├── ErrorViewModel.cs │ ├── Instructor.cs │ ├── OfficeAssignment.cs │ ├── SchoolViewModels │ │ ├── AssignedCourseData.cs │ │ ├── EnrollmentDateGroup.cs │ │ └── InstructorIndexData.cs │ └── Student.cs │ ├── PaginatedList.cs │ ├── Program.cs │ ├── Properties │ └── launchSettings.json │ ├── Startup.cs │ ├── StudentsController.cs │ ├── Views │ ├── Courses │ │ ├── Create.cshtml │ │ ├── Delete.cshtml │ │ ├── Details.cshtml │ │ ├── Edit.cshtml │ │ └── Index.cshtml │ ├── Departments │ │ ├── Create.cshtml │ │ ├── Delete.cshtml │ │ ├── Details.cshtml │ │ ├── Edit.cshtml │ │ └── Index.cshtml │ ├── Home │ │ ├── About.cshtml │ │ ├── Index.cshtml │ │ └── Privacy.cshtml │ ├── Instructors │ │ ├── Create.cshtml │ │ ├── Delete.cshtml │ │ ├── Details.cshtml │ │ ├── Edit.cshtml │ │ └── Index.cshtml │ ├── Shared │ │ ├── Error.cshtml │ │ ├── _Layout.cshtml │ │ └── _ValidationScriptsPartial.cshtml │ ├── Students │ │ ├── Create.cshtml │ │ ├── Delete.cshtml │ │ ├── Details.cshtml │ │ ├── Edit.cshtml │ │ └── Index.cshtml │ ├── _ViewImports.cshtml │ └── _ViewStart.cshtml │ ├── appsettings.Development.json │ ├── appsettings.json │ ├── bin │ └── Debug │ │ └── net5.0 │ │ ├── ContosoUniversity.Views.dll │ │ ├── ContosoUniversity.Views.pdb │ │ ├── ContosoUniversity.deps.json │ │ ├── ContosoUniversity.dll │ │ ├── ContosoUniversity.exe │ │ ├── ContosoUniversity.pdb │ │ ├── ContosoUniversity.runtimeconfig.dev.json │ │ ├── ContosoUniversity.runtimeconfig.json │ │ ├── Humanizer.dll │ │ ├── Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore.dll │ │ ├── Microsoft.AspNetCore.Razor.Language.dll │ │ ├── Microsoft.Bcl.AsyncInterfaces.dll │ │ ├── Microsoft.CodeAnalysis.CSharp.Workspaces.dll │ │ ├── Microsoft.CodeAnalysis.CSharp.dll │ │ ├── Microsoft.CodeAnalysis.Razor.dll │ │ ├── Microsoft.CodeAnalysis.Workspaces.dll │ │ ├── Microsoft.CodeAnalysis.dll │ │ ├── Microsoft.Data.SqlClient.dll │ │ ├── Microsoft.EntityFrameworkCore.Abstractions.dll │ │ ├── Microsoft.EntityFrameworkCore.Design.dll │ │ ├── Microsoft.EntityFrameworkCore.Relational.dll │ │ ├── Microsoft.EntityFrameworkCore.SqlServer.dll │ │ ├── Microsoft.EntityFrameworkCore.dll │ │ ├── Microsoft.Extensions.DependencyInjection.dll │ │ ├── Microsoft.Identity.Client.dll │ │ ├── Microsoft.IdentityModel.JsonWebTokens.dll │ │ ├── Microsoft.IdentityModel.Logging.dll │ │ ├── Microsoft.IdentityModel.Protocols.OpenIdConnect.dll │ │ ├── Microsoft.IdentityModel.Protocols.dll │ │ ├── Microsoft.IdentityModel.Tokens.dll │ │ ├── Microsoft.VisualStudio.Web.CodeGeneration.Contracts.dll │ │ ├── Microsoft.VisualStudio.Web.CodeGeneration.Core.dll │ │ ├── Microsoft.VisualStudio.Web.CodeGeneration.EntityFrameworkCore.dll │ │ ├── Microsoft.VisualStudio.Web.CodeGeneration.Templating.dll │ │ ├── Microsoft.VisualStudio.Web.CodeGeneration.Utils.dll │ │ ├── Microsoft.VisualStudio.Web.CodeGeneration.dll │ │ ├── Microsoft.VisualStudio.Web.CodeGenerators.Mvc.dll │ │ ├── Newtonsoft.Json.dll │ │ ├── System.Composition.AttributedModel.dll │ │ ├── System.Composition.Convention.dll │ │ ├── System.Composition.Hosting.dll │ │ ├── System.Composition.Runtime.dll │ │ ├── System.Composition.TypedParts.dll │ │ ├── System.Configuration.ConfigurationManager.dll │ │ ├── System.Diagnostics.DiagnosticSource.dll │ │ ├── System.IdentityModel.Tokens.Jwt.dll │ │ ├── System.Runtime.Caching.dll │ │ ├── System.Security.Cryptography.ProtectedData.dll │ │ ├── appsettings.Development.json │ │ ├── appsettings.json │ │ ├── cs │ │ ├── Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll │ │ ├── Microsoft.CodeAnalysis.CSharp.resources.dll │ │ ├── Microsoft.CodeAnalysis.Workspaces.resources.dll │ │ └── Microsoft.CodeAnalysis.resources.dll │ │ ├── de │ │ ├── Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll │ │ ├── Microsoft.CodeAnalysis.CSharp.resources.dll │ │ ├── Microsoft.CodeAnalysis.Workspaces.resources.dll │ │ └── Microsoft.CodeAnalysis.resources.dll │ │ ├── dotnet-aspnet-codegenerator-design.dll │ │ ├── es │ │ ├── Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll │ │ ├── Microsoft.CodeAnalysis.CSharp.resources.dll │ │ ├── Microsoft.CodeAnalysis.Workspaces.resources.dll │ │ └── Microsoft.CodeAnalysis.resources.dll │ │ ├── fr │ │ ├── Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll │ │ ├── Microsoft.CodeAnalysis.CSharp.resources.dll │ │ ├── Microsoft.CodeAnalysis.Workspaces.resources.dll │ │ └── Microsoft.CodeAnalysis.resources.dll │ │ ├── it │ │ ├── Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll │ │ ├── Microsoft.CodeAnalysis.CSharp.resources.dll │ │ ├── Microsoft.CodeAnalysis.Workspaces.resources.dll │ │ └── Microsoft.CodeAnalysis.resources.dll │ │ ├── ja │ │ ├── Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll │ │ ├── Microsoft.CodeAnalysis.CSharp.resources.dll │ │ ├── Microsoft.CodeAnalysis.Workspaces.resources.dll │ │ └── Microsoft.CodeAnalysis.resources.dll │ │ ├── ko │ │ ├── Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll │ │ ├── Microsoft.CodeAnalysis.CSharp.resources.dll │ │ ├── Microsoft.CodeAnalysis.Workspaces.resources.dll │ │ └── Microsoft.CodeAnalysis.resources.dll │ │ ├── pl │ │ ├── Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll │ │ ├── Microsoft.CodeAnalysis.CSharp.resources.dll │ │ ├── Microsoft.CodeAnalysis.Workspaces.resources.dll │ │ └── Microsoft.CodeAnalysis.resources.dll │ │ ├── pt-BR │ │ ├── Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll │ │ ├── Microsoft.CodeAnalysis.CSharp.resources.dll │ │ ├── Microsoft.CodeAnalysis.Workspaces.resources.dll │ │ └── Microsoft.CodeAnalysis.resources.dll │ │ ├── ref │ │ └── ContosoUniversity.dll │ │ ├── ru │ │ ├── Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll │ │ ├── Microsoft.CodeAnalysis.CSharp.resources.dll │ │ ├── Microsoft.CodeAnalysis.Workspaces.resources.dll │ │ └── Microsoft.CodeAnalysis.resources.dll │ │ ├── runtimes │ │ ├── unix │ │ │ └── lib │ │ │ │ └── netcoreapp3.1 │ │ │ │ └── Microsoft.Data.SqlClient.dll │ │ ├── win-arm │ │ │ ├── lib │ │ │ │ └── net5.0 │ │ │ │ │ └── dotnet-aspnet-codegenerator-design.exe │ │ │ └── native │ │ │ │ ├── Microsoft.Data.SqlClient.SNI.dll │ │ │ │ └── Microsoft.Data.SqlClient.SNI.pdb │ │ ├── win-arm64 │ │ │ ├── lib │ │ │ │ └── net5.0 │ │ │ │ │ └── dotnet-aspnet-codegenerator-design.exe │ │ │ └── native │ │ │ │ ├── Microsoft.Data.SqlClient.SNI.dll │ │ │ │ └── Microsoft.Data.SqlClient.SNI.pdb │ │ ├── win-x64 │ │ │ └── native │ │ │ │ ├── Microsoft.Data.SqlClient.SNI.dll │ │ │ │ └── Microsoft.Data.SqlClient.SNI.pdb │ │ ├── win-x86 │ │ │ └── native │ │ │ │ ├── Microsoft.Data.SqlClient.SNI.dll │ │ │ │ └── Microsoft.Data.SqlClient.SNI.pdb │ │ └── win │ │ │ └── lib │ │ │ ├── netcoreapp3.1 │ │ │ └── Microsoft.Data.SqlClient.dll │ │ │ └── netstandard2.0 │ │ │ ├── System.Runtime.Caching.dll │ │ │ └── System.Security.Cryptography.ProtectedData.dll │ │ ├── tr │ │ ├── Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll │ │ ├── Microsoft.CodeAnalysis.CSharp.resources.dll │ │ ├── Microsoft.CodeAnalysis.Workspaces.resources.dll │ │ └── Microsoft.CodeAnalysis.resources.dll │ │ ├── zh-Hans │ │ ├── Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll │ │ ├── Microsoft.CodeAnalysis.CSharp.resources.dll │ │ ├── Microsoft.CodeAnalysis.Workspaces.resources.dll │ │ └── Microsoft.CodeAnalysis.resources.dll │ │ └── zh-Hant │ │ ├── Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll │ │ ├── Microsoft.CodeAnalysis.CSharp.resources.dll │ │ ├── Microsoft.CodeAnalysis.Workspaces.resources.dll │ │ └── Microsoft.CodeAnalysis.resources.dll │ ├── obj │ ├── ContosoUniversity.csproj.EntityFrameworkCore.targets │ ├── ContosoUniversity.csproj.nuget.dgspec.json │ ├── ContosoUniversity.csproj.nuget.g.props │ ├── ContosoUniversity.csproj.nuget.g.targets │ ├── Debug │ │ └── net5.0 │ │ │ ├── .NETCoreApp,Version=v5.0.AssemblyAttributes.cs │ │ │ ├── ContosoUniversity.AssemblyInfo.cs │ │ │ ├── ContosoUniversity.AssemblyInfoInputs.cache │ │ │ ├── ContosoUniversity.GeneratedMSBuildEditorConfig.editorconfig │ │ │ ├── ContosoUniversity.MvcApplicationPartsAssemblyInfo.cache │ │ │ ├── ContosoUniversity.RazorAssemblyInfo.cache │ │ │ ├── ContosoUniversity.RazorAssemblyInfo.cs │ │ │ ├── ContosoUniversity.RazorCoreGenerate.cache │ │ │ ├── ContosoUniversity.RazorTargetAssemblyInfo.cache │ │ │ ├── ContosoUniversity.RazorTargetAssemblyInfo.cs │ │ │ ├── ContosoUniversity.TagHelpers.input.cache │ │ │ ├── ContosoUniversity.TagHelpers.output.cache │ │ │ ├── ContosoUniversity.Views.dll │ │ │ ├── ContosoUniversity.Views.pdb │ │ │ ├── ContosoUniversity.assets.cache │ │ │ ├── ContosoUniversity.csproj.AssemblyReference.cache │ │ │ ├── ContosoUniversity.csproj.CopyComplete │ │ │ ├── ContosoUniversity.csproj.CoreCompileInputs.cache │ │ │ ├── ContosoUniversity.csproj.FileListAbsolute.txt │ │ │ ├── ContosoUniversity.dll │ │ │ ├── ContosoUniversity.genruntimeconfig.cache │ │ │ ├── ContosoUniversity.pdb │ │ │ ├── Razor │ │ │ └── Views │ │ │ │ ├── Courses │ │ │ │ ├── Create.cshtml.g.cs │ │ │ │ ├── Delete.cshtml.g.cs │ │ │ │ ├── Details.cshtml.g.cs │ │ │ │ ├── Edit.cshtml.g.cs │ │ │ │ └── Index.cshtml.g.cs │ │ │ │ ├── Departments │ │ │ │ ├── Create.cshtml.g.cs │ │ │ │ ├── Delete.cshtml.g.cs │ │ │ │ ├── Details.cshtml.g.cs │ │ │ │ ├── Edit.cshtml.g.cs │ │ │ │ └── Index.cshtml.g.cs │ │ │ │ ├── Home │ │ │ │ ├── About.cshtml.g.cs │ │ │ │ ├── Index.cshtml.g.cs │ │ │ │ └── Privacy.cshtml.g.cs │ │ │ │ ├── Instructors │ │ │ │ ├── Create.cshtml.g.cs │ │ │ │ ├── Delete.cshtml.g.cs │ │ │ │ ├── Details.cshtml.g.cs │ │ │ │ ├── Edit.cshtml.g.cs │ │ │ │ └── Index.cshtml.g.cs │ │ │ │ ├── Shared │ │ │ │ ├── Error.cshtml.g.cs │ │ │ │ ├── _Layout.cshtml.g.cs │ │ │ │ └── _ValidationScriptsPartial.cshtml.g.cs │ │ │ │ ├── Students │ │ │ │ ├── Create.cshtml.g.cs │ │ │ │ ├── Delete.cshtml.g.cs │ │ │ │ ├── Details.cshtml.g.cs │ │ │ │ ├── Edit.cshtml.g.cs │ │ │ │ └── Index.cshtml.g.cs │ │ │ │ ├── _ViewImports.cshtml.g.cs │ │ │ │ └── _ViewStart.cshtml.g.cs │ │ │ ├── apphost.exe │ │ │ ├── ref │ │ │ └── ContosoUniversity.dll │ │ │ └── staticwebassets │ │ │ ├── ContosoUniversity.StaticWebAssets.Manifest.cache │ │ │ └── ContosoUniversity.StaticWebAssets.xml │ ├── project.assets.json │ └── project.nuget.cache │ └── wwwroot │ ├── css │ └── site.css │ ├── favicon.ico │ ├── js │ └── site.js │ └── lib │ ├── bootstrap │ ├── LICENSE │ └── dist │ │ ├── css │ │ ├── bootstrap-grid.css │ │ ├── bootstrap-grid.css.map │ │ ├── bootstrap-grid.min.css │ │ ├── bootstrap-grid.min.css.map │ │ ├── bootstrap-reboot.css │ │ ├── bootstrap-reboot.css.map │ │ ├── bootstrap-reboot.min.css │ │ ├── bootstrap-reboot.min.css.map │ │ ├── bootstrap.css │ │ ├── bootstrap.css.map │ │ ├── bootstrap.min.css │ │ └── bootstrap.min.css.map │ │ └── js │ │ ├── bootstrap.bundle.js │ │ ├── bootstrap.bundle.js.map │ │ ├── bootstrap.bundle.min.js │ │ ├── bootstrap.bundle.min.js.map │ │ ├── bootstrap.js │ │ ├── bootstrap.js.map │ │ ├── bootstrap.min.js │ │ └── bootstrap.min.js.map │ ├── jquery-validation-unobtrusive │ ├── LICENSE.txt │ ├── jquery.validate.unobtrusive.js │ └── jquery.validate.unobtrusive.min.js │ ├── jquery-validation │ ├── LICENSE.md │ └── dist │ │ ├── additional-methods.js │ │ ├── additional-methods.min.js │ │ ├── jquery.validate.js │ │ └── jquery.validate.min.js │ └── jquery │ ├── LICENSE.txt │ └── dist │ ├── jquery.js │ ├── jquery.min.js │ └── jquery.min.map ├── Container ├── DockerExample │ ├── .dockerignore │ ├── .gitignore │ ├── Controllers │ │ └── HomeController.cs │ ├── Data │ │ └── ApplicationDbContext.cs │ ├── DockerExampleWithSQL.csproj │ ├── Dockerfile │ ├── Migrations │ │ ├── 20210114225834_initial migration.Designer.cs │ │ ├── 20210114225834_initial migration.cs │ │ └── ApplicationDbContextModelSnapshot.cs │ ├── Models │ │ ├── ErrorViewModel.cs │ │ └── User.cs │ ├── Program.cs │ ├── Properties │ │ └── launchSettings.json │ ├── Services │ │ └── DatabaseManagementService.cs │ ├── Startup.cs │ ├── Views │ │ ├── Home │ │ │ ├── Create.cshtml │ │ │ ├── Index.cshtml │ │ │ └── Privacy.cshtml │ │ ├── Shared │ │ │ ├── Error.cshtml │ │ │ ├── _Layout.cshtml │ │ │ └── _ValidationScriptsPartial.cshtml │ │ ├── _ViewImports.cshtml │ │ └── _ViewStart.cshtml │ ├── appsettings.Development.json │ ├── appsettings.json │ ├── docker-compose.debug.yml │ ├── docker-compose.yml │ ├── nuget.config │ └── wwwroot │ │ ├── css │ │ └── site.css │ │ ├── favicon.ico │ │ ├── js │ │ └── site.js │ │ └── lib │ │ ├── bootstrap │ │ ├── LICENSE │ │ └── dist │ │ │ ├── css │ │ │ ├── bootstrap-grid.css │ │ │ ├── bootstrap-grid.css.map │ │ │ ├── bootstrap-grid.min.css │ │ │ ├── bootstrap-grid.min.css.map │ │ │ ├── bootstrap-reboot.css │ │ │ ├── bootstrap-reboot.css.map │ │ │ ├── bootstrap-reboot.min.css │ │ │ ├── bootstrap-reboot.min.css.map │ │ │ ├── bootstrap.css │ │ │ ├── bootstrap.css.map │ │ │ ├── bootstrap.min.css │ │ │ └── bootstrap.min.css.map │ │ │ └── js │ │ │ ├── bootstrap.bundle.js │ │ │ ├── bootstrap.bundle.js.map │ │ │ ├── bootstrap.bundle.min.js │ │ │ ├── bootstrap.bundle.min.js.map │ │ │ ├── bootstrap.js │ │ │ ├── bootstrap.js.map │ │ │ ├── bootstrap.min.js │ │ │ └── bootstrap.min.js.map │ │ ├── jquery-validation-unobtrusive │ │ ├── LICENSE.txt │ │ ├── jquery.validate.unobtrusive.js │ │ └── jquery.validate.unobtrusive.min.js │ │ ├── jquery-validation │ │ └── dist │ │ │ ├── additional-methods.js │ │ │ ├── additional-methods.min.js │ │ │ ├── jquery.validate.js │ │ │ └── jquery.validate.min.js │ │ └── jquery │ │ ├── LICENSE.txt │ │ └── dist │ │ ├── jquery.js │ │ ├── jquery.min.js │ │ └── jquery.min.map ├── KubernetesApplication │ ├── myapp-configmap.yaml │ ├── myapp.yaml │ ├── sql-configmap.yaml │ ├── sql-secret.yaml │ └── sql.yaml └── Kubernets │ ├── CreateK8sLocally.md │ └── deployment.yaml ├── Document ├── ABP.md ├── DDD.md ├── EnergyManagement.md └── RateLimiting.md ├── README.md ├── RateLimiter ├── BasicWeatherCacheApp │ ├── .vs │ │ └── BasicWeatherCacheApp │ │ │ └── v17 │ │ │ └── .suo │ ├── BasicWeatherCacheApp.csproj │ ├── BasicWeatherCacheApp.csproj.user │ ├── Controllers │ │ ├── RateLimitedController.cs │ │ └── WeatherForecastController.cs │ ├── ForecastResult.cs │ ├── Program.cs │ ├── Properties │ │ └── launchSettings.json │ ├── RateLimitRule.cs │ ├── SlidingWindowRateLimiter.cs │ ├── SlidingWindowRateLimiterExtensions.cs │ ├── WeatherForecast.cs │ ├── appsettings.Development.json │ ├── appsettings.json │ ├── bin │ │ └── Debug │ │ │ └── net6.0 │ │ │ ├── AspNetCoreRateLimit.dll │ │ │ ├── BasicWeatherCacheApp.deps.json │ │ │ ├── BasicWeatherCacheApp.dll │ │ │ ├── BasicWeatherCacheApp.exe │ │ │ ├── BasicWeatherCacheApp.pdb │ │ │ ├── BasicWeatherCacheApp.runtimeconfig.json │ │ │ ├── Microsoft.OpenApi.dll │ │ │ ├── Microsoft.Win32.SystemEvents.dll │ │ │ ├── Newtonsoft.Json.dll │ │ │ ├── Pipelines.Sockets.Unofficial.dll │ │ │ ├── StackExchange.Redis.dll │ │ │ ├── Swashbuckle.AspNetCore.Swagger.dll │ │ │ ├── Swashbuckle.AspNetCore.SwaggerGen.dll │ │ │ ├── Swashbuckle.AspNetCore.SwaggerUI.dll │ │ │ ├── System.Configuration.ConfigurationManager.dll │ │ │ ├── System.Diagnostics.PerformanceCounter.dll │ │ │ ├── System.Drawing.Common.dll │ │ │ ├── System.Security.Cryptography.ProtectedData.dll │ │ │ ├── System.Security.Permissions.dll │ │ │ ├── System.Windows.Extensions.dll │ │ │ ├── appsettings.Development.json │ │ │ ├── appsettings.json │ │ │ ├── ref │ │ │ └── BasicWeatherCacheApp.dll │ │ │ └── runtimes │ │ │ ├── unix │ │ │ └── lib │ │ │ │ └── netcoreapp3.0 │ │ │ │ └── System.Drawing.Common.dll │ │ │ └── win │ │ │ └── lib │ │ │ ├── netcoreapp2.0 │ │ │ └── System.Diagnostics.PerformanceCounter.dll │ │ │ ├── netcoreapp3.0 │ │ │ ├── Microsoft.Win32.SystemEvents.dll │ │ │ ├── System.Drawing.Common.dll │ │ │ └── System.Windows.Extensions.dll │ │ │ └── netstandard2.0 │ │ │ └── System.Security.Cryptography.ProtectedData.dll │ └── obj │ │ ├── BasicWeatherCacheApp.csproj.nuget.dgspec.json │ │ ├── BasicWeatherCacheApp.csproj.nuget.g.props │ │ ├── BasicWeatherCacheApp.csproj.nuget.g.targets │ │ ├── Debug │ │ └── net6.0 │ │ │ ├── .NETCoreApp,Version=v6.0.AssemblyAttributes.cs │ │ │ ├── BasicWeatherCacheApp.AssemblyInfo.cs │ │ │ ├── BasicWeatherCacheApp.AssemblyInfoInputs.cache │ │ │ ├── BasicWeatherCacheApp.GeneratedMSBuildEditorConfig.editorconfig │ │ │ ├── BasicWeatherCacheApp.GlobalUsings.g.cs │ │ │ ├── BasicWeatherCacheApp.MvcApplicationPartsAssemblyInfo.cache │ │ │ ├── BasicWeatherCacheApp.MvcApplicationPartsAssemblyInfo.cs │ │ │ ├── BasicWeatherCacheApp.assets.cache │ │ │ ├── BasicWeatherCacheApp.csproj.AssemblyReference.cache │ │ │ ├── BasicWeatherCacheApp.csproj.CopyComplete │ │ │ ├── BasicWeatherCacheApp.csproj.CoreCompileInputs.cache │ │ │ ├── BasicWeatherCacheApp.csproj.FileListAbsolute.txt │ │ │ ├── BasicWeatherCacheApp.dll │ │ │ ├── BasicWeatherCacheApp.genruntimeconfig.cache │ │ │ ├── BasicWeatherCacheApp.pdb │ │ │ ├── apphost.exe │ │ │ ├── ref │ │ │ └── BasicWeatherCacheApp.dll │ │ │ └── staticwebassets.build.json │ │ ├── project.assets.json │ │ ├── project.nuget.cache │ │ └── staticwebassets.pack.sentinel └── readme.md └── SQL ├── CommonSQL.md └── SetupSQLDocker.md /CSharp/AsyncAwait/.vs/AsyncExample/DesignTimeBuild/.dtbcache.v2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JimmyCoding92/JimmyCodingExamples/d7c916647aaec086f8ed0fa3d4b84c062255210a/CSharp/AsyncAwait/.vs/AsyncExample/DesignTimeBuild/.dtbcache.v2 -------------------------------------------------------------------------------- /CSharp/AsyncAwait/.vs/AsyncExample/v16/.suo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JimmyCoding92/JimmyCodingExamples/d7c916647aaec086f8ed0fa3d4b84c062255210a/CSharp/AsyncAwait/.vs/AsyncExample/v16/.suo -------------------------------------------------------------------------------- /CSharp/AsyncAwait/AsyncExample.sln: -------------------------------------------------------------------------------- 1 |  2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio Version 16 4 | VisualStudioVersion = 16.0.31321.278 5 | MinimumVisualStudioVersion = 10.0.40219.1 6 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AsyncExample", "AsyncExample\AsyncExample.csproj", "{7F26045E-8591-41EE-AFA6-D0D8383019D8}" 7 | EndProject 8 | Global 9 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 10 | Debug|Any CPU = Debug|Any CPU 11 | Release|Any CPU = Release|Any CPU 12 | EndGlobalSection 13 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 14 | {7F26045E-8591-41EE-AFA6-D0D8383019D8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 15 | {7F26045E-8591-41EE-AFA6-D0D8383019D8}.Debug|Any CPU.Build.0 = Debug|Any CPU 16 | {7F26045E-8591-41EE-AFA6-D0D8383019D8}.Release|Any CPU.ActiveCfg = Release|Any CPU 17 | {7F26045E-8591-41EE-AFA6-D0D8383019D8}.Release|Any CPU.Build.0 = Release|Any CPU 18 | EndGlobalSection 19 | GlobalSection(SolutionProperties) = preSolution 20 | HideSolutionNode = FALSE 21 | EndGlobalSection 22 | GlobalSection(ExtensibilityGlobals) = postSolution 23 | SolutionGuid = {60A396B7-348C-4B9B-998A-CD35F0FDE89B} 24 | EndGlobalSection 25 | EndGlobal 26 | -------------------------------------------------------------------------------- /CSharp/AsyncAwait/AsyncExample/AsyncExample.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | WinExe 5 | netcoreapp3.1 6 | true 7 | 8 | 9 | -------------------------------------------------------------------------------- /CSharp/AsyncAwait/AsyncExample/AsyncExample.csproj.user: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | Form 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /CSharp/AsyncAwait/AsyncExample/Contents.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Text; 4 | 5 | namespace AsyncExample 6 | { 7 | public class Contents 8 | { 9 | public static readonly IEnumerable WebSites = new string[] 10 | { 11 | "https://www.zhihu.com", 12 | "https://www.baidu.com", 13 | "https://www.weibo.com", 14 | "https://www.stackoverflow.com", 15 | "https://docs.microsoft.com", 16 | "https://docs.microsoft.com/aspnet/core", 17 | "https://docs.microsoft.com/azure", 18 | "https://docs.microsoft.com/azure/devops", 19 | "https://docs.microsoft.com/dotnet", 20 | "https://docs.microsoft.com/dynamics365", 21 | "https://docs.microsoft.com/education", 22 | "https://docs.microsoft.com/enterprise-mobility-security", 23 | "https://docs.microsoft.com/gaming", 24 | "https://docs.microsoft.com/graph", 25 | "https://docs.microsoft.com/microsoft-365", 26 | "https://docs.microsoft.com/office", 27 | "https://docs.microsoft.com/powershell", 28 | "https://docs.microsoft.com/sql", 29 | "https://docs.microsoft.com/surface", 30 | "https://docs.microsoft.com/system-center", 31 | "https://docs.microsoft.com/visualstudio", 32 | "https://docs.microsoft.com/windows", 33 | "https://docs.microsoft.com/xamarin" 34 | }; 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /CSharp/AsyncAwait/AsyncExample/Helper.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Net.Http; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | 7 | namespace AsyncExample 8 | { 9 | public class Helper 10 | { 11 | public static async Task ProcessUrlAsync(string url, HttpClient client) 12 | { 13 | byte[] content = await client.GetByteArrayAsync(url); 14 | Console.WriteLine($"{url,-60} {content.Length,10:#,#}"); 15 | 16 | return content.Length; 17 | } 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /CSharp/AsyncAwait/AsyncExample/Program.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Net.Http; 5 | using System.Threading.Tasks; 6 | using System.Windows.Forms; 7 | 8 | namespace AsyncExample 9 | { 10 | static class Program 11 | { 12 | /// 13 | /// The main entry point for the application. 14 | /// 15 | [STAThread] 16 | static void Main() 17 | { 18 | Application.SetHighDpiMode(HighDpiMode.SystemAware); 19 | Application.EnableVisualStyles(); 20 | Application.SetCompatibleTextRenderingDefault(false); 21 | 22 | Application.Run(new Form1()); 23 | } 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /CSharp/AsyncAwaitAdvance/.vs/ValueTaskDemo/DesignTimeBuild/.dtbcache.v2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JimmyCoding92/JimmyCodingExamples/d7c916647aaec086f8ed0fa3d4b84c062255210a/CSharp/AsyncAwaitAdvance/.vs/ValueTaskDemo/DesignTimeBuild/.dtbcache.v2 -------------------------------------------------------------------------------- /CSharp/AsyncAwaitAdvance/.vs/ValueTaskDemo/v16/.suo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JimmyCoding92/JimmyCodingExamples/d7c916647aaec086f8ed0fa3d4b84c062255210a/CSharp/AsyncAwaitAdvance/.vs/ValueTaskDemo/v16/.suo -------------------------------------------------------------------------------- /CSharp/AsyncAwaitAdvance/ValueTaskDemo.sln: -------------------------------------------------------------------------------- 1 |  2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio Version 16 4 | VisualStudioVersion = 16.0.31410.357 5 | MinimumVisualStudioVersion = 10.0.40219.1 6 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ValueTaskDemo", "ValueTaskDemo\ValueTaskDemo.csproj", "{41069061-ADE5-465B-A0E2-1FDB5052B7FA}" 7 | EndProject 8 | Global 9 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 10 | Debug|Any CPU = Debug|Any CPU 11 | Release|Any CPU = Release|Any CPU 12 | EndGlobalSection 13 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 14 | {41069061-ADE5-465B-A0E2-1FDB5052B7FA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 15 | {41069061-ADE5-465B-A0E2-1FDB5052B7FA}.Debug|Any CPU.Build.0 = Debug|Any CPU 16 | {41069061-ADE5-465B-A0E2-1FDB5052B7FA}.Release|Any CPU.ActiveCfg = Release|Any CPU 17 | {41069061-ADE5-465B-A0E2-1FDB5052B7FA}.Release|Any CPU.Build.0 = Release|Any CPU 18 | EndGlobalSection 19 | GlobalSection(SolutionProperties) = preSolution 20 | HideSolutionNode = FALSE 21 | EndGlobalSection 22 | GlobalSection(ExtensibilityGlobals) = postSolution 23 | SolutionGuid = {5FDB5319-B549-4C74-9601-0599BD15FE9D} 24 | EndGlobalSection 25 | EndGlobal 26 | -------------------------------------------------------------------------------- /CSharp/AsyncAwaitAdvance/ValueTaskDemo/ValueTaskDemo.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Exe 5 | netcoreapp3.1 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /CSharp/DependencyInjection/.vs/DependencyInjection/DesignTimeBuild/.dtbcache.v2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JimmyCoding92/JimmyCodingExamples/d7c916647aaec086f8ed0fa3d4b84c062255210a/CSharp/DependencyInjection/.vs/DependencyInjection/DesignTimeBuild/.dtbcache.v2 -------------------------------------------------------------------------------- /CSharp/DependencyInjection/.vs/DependencyInjection/v16/.suo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JimmyCoding92/JimmyCodingExamples/d7c916647aaec086f8ed0fa3d4b84c062255210a/CSharp/DependencyInjection/.vs/DependencyInjection/v16/.suo -------------------------------------------------------------------------------- /CSharp/DependencyInjection/DependencyInjection.sln: -------------------------------------------------------------------------------- 1 |  2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio Version 16 4 | VisualStudioVersion = 16.0.31410.357 5 | MinimumVisualStudioVersion = 10.0.40219.1 6 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DependencyInjection", "DependencyInjection\DependencyInjection.csproj", "{9A9B1E1B-ECE4-4FCF-A210-45AFE2131B97}" 7 | EndProject 8 | Global 9 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 10 | Debug|Any CPU = Debug|Any CPU 11 | Release|Any CPU = Release|Any CPU 12 | EndGlobalSection 13 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 14 | {9A9B1E1B-ECE4-4FCF-A210-45AFE2131B97}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 15 | {9A9B1E1B-ECE4-4FCF-A210-45AFE2131B97}.Debug|Any CPU.Build.0 = Debug|Any CPU 16 | {9A9B1E1B-ECE4-4FCF-A210-45AFE2131B97}.Release|Any CPU.ActiveCfg = Release|Any CPU 17 | {9A9B1E1B-ECE4-4FCF-A210-45AFE2131B97}.Release|Any CPU.Build.0 = Release|Any CPU 18 | EndGlobalSection 19 | GlobalSection(SolutionProperties) = preSolution 20 | HideSolutionNode = FALSE 21 | EndGlobalSection 22 | GlobalSection(ExtensibilityGlobals) = postSolution 23 | SolutionGuid = {C001308C-15F4-4A03-9C61-30403AC061F9} 24 | EndGlobalSection 25 | EndGlobal 26 | -------------------------------------------------------------------------------- /CSharp/DependencyInjection/DependencyInjection/DependencyInjection.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | netcoreapp3.1 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /CSharp/DependencyInjection/DependencyInjection/DependencyInjection.csproj.user: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | RazorViewEmptyScaffolder 5 | root/Common/MVC/View 6 | 7 | -------------------------------------------------------------------------------- /CSharp/DependencyInjection/DependencyInjection/Models/ErrorViewModel.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace DependencyInjection.Models 4 | { 5 | public class ErrorViewModel 6 | { 7 | public string RequestId { get; set; } 8 | 9 | public bool ShowRequestId => !string.IsNullOrEmpty(RequestId); 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /CSharp/DependencyInjection/DependencyInjection/Models/IdModel.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Threading.Tasks; 5 | 6 | namespace DependencyInjection.Models 7 | { 8 | public class IdModel 9 | { 10 | public string ControllerId; 11 | 12 | public string DependencyServiceId; 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /CSharp/DependencyInjection/DependencyInjection/Program.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.AspNetCore.Hosting; 2 | using Microsoft.Extensions.Configuration; 3 | using Microsoft.Extensions.Hosting; 4 | using Microsoft.Extensions.Logging; 5 | using System; 6 | using System.Collections.Generic; 7 | using System.Linq; 8 | using System.Threading.Tasks; 9 | 10 | namespace DependencyInjection 11 | { 12 | public class Program 13 | { 14 | public static void Main(string[] args) 15 | { 16 | CreateHostBuilder(args).Build().Run(); 17 | } 18 | 19 | public static IHostBuilder CreateHostBuilder(string[] args) => 20 | Host.CreateDefaultBuilder(args) 21 | .ConfigureWebHostDefaults(webBuilder => 22 | { 23 | webBuilder.UseStartup(); 24 | }) 25 | .UseDefaultServiceProvider((context, options) => 26 | { 27 | options.ValidateScopes = false; 28 | options.ValidateOnBuild = true; 29 | }); 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /CSharp/DependencyInjection/DependencyInjection/Properties/launchSettings.json: -------------------------------------------------------------------------------- 1 | { 2 | "iisSettings": { 3 | "windowsAuthentication": false, 4 | "anonymousAuthentication": true, 5 | "iisExpress": { 6 | "applicationUrl": "http://localhost:45077", 7 | "sslPort": 0 8 | } 9 | }, 10 | "profiles": { 11 | "IIS Express": { 12 | "commandName": "IISExpress", 13 | "launchBrowser": true, 14 | "environmentVariables": { 15 | "ASPNETCORE_ENVIRONMENT": "Development" 16 | } 17 | }, 18 | "DependencyInjection": { 19 | "commandName": "Project", 20 | "launchBrowser": true, 21 | "applicationUrl": "http://localhost:5000", 22 | "environmentVariables": { 23 | "ASPNETCORE_ENVIRONMENT": "Development" 24 | } 25 | } 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /CSharp/DependencyInjection/DependencyInjection/Services/DependencyService.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Threading.Tasks; 5 | 6 | namespace DependencyInjection.Services 7 | { 8 | public interface IDependencyService 9 | { 10 | public string GetSingletonId(); 11 | 12 | public string GetTransientId(); 13 | 14 | public string GetScopedId(); 15 | } 16 | 17 | public class DependencyService : IDependencyService 18 | { 19 | public ISingletonService singletonService; 20 | public ITransientService transientService; 21 | public IScopedService scopedService; 22 | 23 | public DependencyService(ISingletonService singletonService, ITransientService transientService, IScopedService scopedService) 24 | { 25 | this.singletonService = singletonService; 26 | this.transientService = transientService; 27 | this.scopedService = scopedService; 28 | } 29 | 30 | public string GetScopedId() 31 | { 32 | return scopedService.GetId(); 33 | } 34 | 35 | public string GetSingletonId() 36 | { 37 | return singletonService.GetId(); 38 | } 39 | 40 | public string GetTransientId() 41 | { 42 | return transientService.GetId(); 43 | } 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /CSharp/DependencyInjection/DependencyInjection/Services/IService.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Threading.Tasks; 5 | 6 | namespace DependencyInjection.Services 7 | { 8 | public interface IService 9 | { 10 | string GetId(); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /CSharp/DependencyInjection/DependencyInjection/Services/ScopedService.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.Extensions.Logging; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.Linq; 5 | using System.Threading.Tasks; 6 | 7 | namespace DependencyInjection.Services 8 | { 9 | public interface IScopedService : IService { } 10 | 11 | public class ScopedService : IScopedService, IDisposable 12 | { 13 | private ILogger logger; 14 | private string id; 15 | 16 | public ScopedService(ILogger logger) 17 | { 18 | this.logger = logger; 19 | id = Guid.NewGuid().ToString(); 20 | 21 | this.logger.LogInformation("ScopedService with instance id {0} Start", id); 22 | } 23 | 24 | string IService.GetId() 25 | { 26 | return id; 27 | } 28 | public void Dispose() 29 | { 30 | this.logger.LogInformation("ScopedService with instance id {0} Dispose", id); 31 | } 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /CSharp/DependencyInjection/DependencyInjection/Services/SingletonService.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.Extensions.Logging; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.Linq; 5 | using System.Threading.Tasks; 6 | 7 | namespace DependencyInjection.Services 8 | { 9 | public interface ISingletonService : IService { } 10 | 11 | public class SingletonService : ISingletonService, IDisposable 12 | { 13 | private string id; 14 | private ILogger logger; 15 | 16 | public SingletonService(ILogger logger) 17 | { 18 | id = Guid.NewGuid().ToString(); 19 | this.logger = logger; 20 | this.logger.LogInformation("SingletonService with instance id {0} Start", id); 21 | } 22 | 23 | public string GetId() 24 | { 25 | return id; 26 | } 27 | 28 | public void Dispose() 29 | { 30 | this.logger.LogInformation("SingletonService with instance id {0} Dispose", id); 31 | } 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /CSharp/DependencyInjection/DependencyInjection/Services/TransientService.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.Extensions.Logging; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.Linq; 5 | using System.Threading.Tasks; 6 | 7 | namespace DependencyInjection.Services 8 | { 9 | public interface ITransientService : IService { } 10 | 11 | public class TransientService : ITransientService, IDisposable 12 | { 13 | private string id; 14 | private ILogger logger; 15 | 16 | public TransientService(ILogger logger) 17 | { 18 | id = Guid.NewGuid().ToString(); 19 | this.logger = logger; 20 | this.logger.LogInformation("Transient service with instance id {0} start", id); 21 | } 22 | 23 | public void Dispose() 24 | { 25 | this.logger.LogInformation("Transient service with instance id {0} dispose", id); 26 | } 27 | 28 | public string GetId() 29 | { 30 | return id; 31 | } 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /CSharp/DependencyInjection/DependencyInjection/Views/Home/Index.cshtml: -------------------------------------------------------------------------------- 1 | @{ 2 | ViewData["Title"] = "Home Page"; 3 | } 4 | 5 |
6 |

Welcome

7 |

Learn about building Web apps with ASP.NET Core.

8 |
9 | -------------------------------------------------------------------------------- /CSharp/DependencyInjection/DependencyInjection/Views/Home/Scoped.cshtml: -------------------------------------------------------------------------------- 1 | @model IdModel 2 | 3 |

Scoped Service Id: @Model.ControllerId, DependencyServiceId - @Model.DependencyServiceId

4 | 5 |

6 | Use cases 7 |

8 | 9 |
    10 |
  • Save request context information.
  • 11 |
-------------------------------------------------------------------------------- /CSharp/DependencyInjection/DependencyInjection/Views/Home/Singleton.cshtml: -------------------------------------------------------------------------------- 1 | @model IdModel 2 | 3 |

Singleton Service id: @Model.ControllerId, DependencyServiceId - @Model.DependencyServiceId

4 | 5 |

6 | Use cases 7 |

8 | 9 |
    10 |
  • Clients: HttpClient, Cache, DB
  • 11 |
  • Global Configurations
  • 12 |
  • Application states
  • 13 |
-------------------------------------------------------------------------------- /CSharp/DependencyInjection/DependencyInjection/Views/Home/Transient.cshtml: -------------------------------------------------------------------------------- 1 | @model IdModel 2 | 3 |

Transient Service id - @Model.ControllerId, DependencyServiceId - @Model.DependencyServiceId

4 | 5 |

6 | Use cases 7 |

8 | 9 |
    10 |
  • File access
  • 11 |
  • When you need a fresh instance of an object every single time.
  • 12 |
-------------------------------------------------------------------------------- /CSharp/DependencyInjection/DependencyInjection/Views/Shared/Error.cshtml: -------------------------------------------------------------------------------- 1 | @model ErrorViewModel 2 | @{ 3 | ViewData["Title"] = "Error"; 4 | } 5 | 6 |

Error.

7 |

An error occurred while processing your request.

8 | 9 | @if (Model.ShowRequestId) 10 | { 11 |

12 | Request ID: @Model.RequestId 13 |

14 | } 15 | 16 |

Development Mode

17 |

18 | Swapping to Development environment will display more detailed information about the error that occurred. 19 |

20 |

21 | The Development environment shouldn't be enabled for deployed applications. 22 | It can result in displaying sensitive information from exceptions to end users. 23 | For local debugging, enable the Development environment by setting the ASPNETCORE_ENVIRONMENT environment variable to Development 24 | and restarting the app. 25 |

26 | -------------------------------------------------------------------------------- /CSharp/DependencyInjection/DependencyInjection/Views/Shared/_ValidationScriptsPartial.cshtml: -------------------------------------------------------------------------------- 1 |  2 | 3 | -------------------------------------------------------------------------------- /CSharp/DependencyInjection/DependencyInjection/Views/_ViewImports.cshtml: -------------------------------------------------------------------------------- 1 | @using DependencyInjection 2 | @using DependencyInjection.Models 3 | @addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers 4 | -------------------------------------------------------------------------------- /CSharp/DependencyInjection/DependencyInjection/Views/_ViewStart.cshtml: -------------------------------------------------------------------------------- 1 | @{ 2 | Layout = "_Layout"; 3 | } 4 | -------------------------------------------------------------------------------- /CSharp/DependencyInjection/DependencyInjection/appsettings.Development.json: -------------------------------------------------------------------------------- 1 | { 2 | "Logging": { 3 | "LogLevel": { 4 | "Default": "Information", 5 | "Microsoft": "Warning", 6 | "Microsoft.Hosting.Lifetime": "Information" 7 | } 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /CSharp/DependencyInjection/DependencyInjection/appsettings.json: -------------------------------------------------------------------------------- 1 | { 2 | "Logging": { 3 | "LogLevel": { 4 | "Default": "Information", 5 | "Microsoft": "Warning", 6 | "Microsoft.Hosting.Lifetime": "Information" 7 | } 8 | }, 9 | "AllowedHosts": "*" 10 | } 11 | -------------------------------------------------------------------------------- /CSharp/DependencyInjection/DependencyInjection/wwwroot/css/site.css: -------------------------------------------------------------------------------- 1 | /* Please see documentation at https://docs.microsoft.com/aspnet/core/client-side/bundling-and-minification 2 | for details on configuring this project to bundle and minify static web assets. */ 3 | 4 | a.navbar-brand { 5 | white-space: normal; 6 | text-align: center; 7 | word-break: break-all; 8 | } 9 | 10 | /* Provide sufficient contrast against white background */ 11 | a { 12 | color: #0366d6; 13 | } 14 | 15 | .btn-primary { 16 | color: #fff; 17 | background-color: #1b6ec2; 18 | border-color: #1861ac; 19 | } 20 | 21 | .nav-pills .nav-link.active, .nav-pills .show > .nav-link { 22 | color: #fff; 23 | background-color: #1b6ec2; 24 | border-color: #1861ac; 25 | } 26 | 27 | /* Sticky footer styles 28 | -------------------------------------------------- */ 29 | html { 30 | font-size: 14px; 31 | } 32 | @media (min-width: 768px) { 33 | html { 34 | font-size: 16px; 35 | } 36 | } 37 | 38 | .border-top { 39 | border-top: 1px solid #e5e5e5; 40 | } 41 | .border-bottom { 42 | border-bottom: 1px solid #e5e5e5; 43 | } 44 | 45 | .box-shadow { 46 | box-shadow: 0 .25rem .75rem rgba(0, 0, 0, .05); 47 | } 48 | 49 | button.accept-policy { 50 | font-size: 1rem; 51 | line-height: inherit; 52 | } 53 | 54 | /* Sticky footer styles 55 | -------------------------------------------------- */ 56 | html { 57 | position: relative; 58 | min-height: 100%; 59 | } 60 | 61 | body { 62 | /* Margin bottom by footer height */ 63 | margin-bottom: 60px; 64 | } 65 | .footer { 66 | position: absolute; 67 | bottom: 0; 68 | width: 100%; 69 | white-space: nowrap; 70 | line-height: 60px; /* Vertically center the text there */ 71 | } 72 | -------------------------------------------------------------------------------- /CSharp/DependencyInjection/DependencyInjection/wwwroot/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JimmyCoding92/JimmyCodingExamples/d7c916647aaec086f8ed0fa3d4b84c062255210a/CSharp/DependencyInjection/DependencyInjection/wwwroot/favicon.ico -------------------------------------------------------------------------------- /CSharp/DependencyInjection/DependencyInjection/wwwroot/js/site.js: -------------------------------------------------------------------------------- 1 | // Please see documentation at https://docs.microsoft.com/aspnet/core/client-side/bundling-and-minification 2 | // for details on configuring this project to bundle and minify static web assets. 3 | 4 | // Write your JavaScript code. 5 | -------------------------------------------------------------------------------- /CSharp/DependencyInjection/DependencyInjection/wwwroot/lib/bootstrap/LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2011-2018 Twitter, Inc. 4 | Copyright (c) 2011-2018 The Bootstrap Authors 5 | 6 | Permission is hereby granted, free of charge, to any person obtaining a copy 7 | of this software and associated documentation files (the "Software"), to deal 8 | in the Software without restriction, including without limitation the rights 9 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | copies of the Software, and to permit persons to whom the Software is 11 | furnished to do so, subject to the following conditions: 12 | 13 | The above copyright notice and this permission notice shall be included in 14 | all copies or substantial portions of the Software. 15 | 16 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 22 | THE SOFTWARE. 23 | -------------------------------------------------------------------------------- /CSharp/DependencyInjection/DependencyInjection/wwwroot/lib/jquery-validation-unobtrusive/LICENSE.txt: -------------------------------------------------------------------------------- 1 | Copyright (c) .NET Foundation. All rights reserved. 2 | 3 | Licensed under the Apache License, Version 2.0 (the "License"); you may not use 4 | these files except in compliance with the License. You may obtain a copy of the 5 | License at 6 | 7 | http://www.apache.org/licenses/LICENSE-2.0 8 | 9 | Unless required by applicable law or agreed to in writing, software distributed 10 | under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR 11 | CONDITIONS OF ANY KIND, either express or implied. See the License for the 12 | specific language governing permissions and limitations under the License. 13 | -------------------------------------------------------------------------------- /CSharp/DependencyInjection/DependencyInjection/wwwroot/lib/jquery/LICENSE.txt: -------------------------------------------------------------------------------- 1 | Copyright JS Foundation and other contributors, https://js.foundation/ 2 | 3 | This software consists of voluntary contributions made by many 4 | individuals. For exact contribution history, see the revision history 5 | available at https://github.com/jquery/jquery 6 | 7 | The following license applies to all parts of this software except as 8 | documented below: 9 | 10 | ==== 11 | 12 | Permission is hereby granted, free of charge, to any person obtaining 13 | a copy of this software and associated documentation files (the 14 | "Software"), to deal in the Software without restriction, including 15 | without limitation the rights to use, copy, modify, merge, publish, 16 | distribute, sublicense, and/or sell copies of the Software, and to 17 | permit persons to whom the Software is furnished to do so, subject to 18 | the following conditions: 19 | 20 | The above copyright notice and this permission notice shall be 21 | included in all copies or substantial portions of the Software. 22 | 23 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 24 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 25 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 26 | NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE 27 | LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION 28 | OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION 29 | WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 30 | 31 | ==== 32 | 33 | All files located in the node_modules and external directories are 34 | externally maintained libraries used by this software which have their 35 | own licenses; we recommend you read them, as their terms may differ from 36 | the terms above. 37 | -------------------------------------------------------------------------------- /CSharp/DependencyInversion/.vs/DependencyInversion/DesignTimeBuild/.dtbcache.v2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JimmyCoding92/JimmyCodingExamples/d7c916647aaec086f8ed0fa3d4b84c062255210a/CSharp/DependencyInversion/.vs/DependencyInversion/DesignTimeBuild/.dtbcache.v2 -------------------------------------------------------------------------------- /CSharp/DependencyInversion/.vs/DependencyInversion/v16/.suo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JimmyCoding92/JimmyCodingExamples/d7c916647aaec086f8ed0fa3d4b84c062255210a/CSharp/DependencyInversion/.vs/DependencyInversion/v16/.suo -------------------------------------------------------------------------------- /CSharp/DependencyInversion/DependencyInversion.sln: -------------------------------------------------------------------------------- 1 |  2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio Version 16 4 | VisualStudioVersion = 16.0.31410.357 5 | MinimumVisualStudioVersion = 10.0.40219.1 6 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DependencyInversion", "DependencyInversion\DependencyInversion.csproj", "{D2567504-04B3-4290-8ECD-0F9C0808EE8C}" 7 | EndProject 8 | Global 9 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 10 | Debug|Any CPU = Debug|Any CPU 11 | Release|Any CPU = Release|Any CPU 12 | EndGlobalSection 13 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 14 | {D2567504-04B3-4290-8ECD-0F9C0808EE8C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 15 | {D2567504-04B3-4290-8ECD-0F9C0808EE8C}.Debug|Any CPU.Build.0 = Debug|Any CPU 16 | {D2567504-04B3-4290-8ECD-0F9C0808EE8C}.Release|Any CPU.ActiveCfg = Release|Any CPU 17 | {D2567504-04B3-4290-8ECD-0F9C0808EE8C}.Release|Any CPU.Build.0 = Release|Any CPU 18 | EndGlobalSection 19 | GlobalSection(SolutionProperties) = preSolution 20 | HideSolutionNode = FALSE 21 | EndGlobalSection 22 | GlobalSection(ExtensibilityGlobals) = postSolution 23 | SolutionGuid = {BAB372A1-CD36-4E7E-BC21-51EC5007715B} 24 | EndGlobalSection 25 | EndGlobal 26 | -------------------------------------------------------------------------------- /CSharp/DependencyInversion/DependencyInversion/Bread.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Text; 4 | 5 | namespace DependencyInversion 6 | { 7 | public class Bread 8 | { 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /CSharp/DependencyInversion/DependencyInversion/Breakfast.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Text; 4 | 5 | namespace DependencyInversion 6 | { 7 | public class Breakfast 8 | { 9 | public Coffee Coffee { get; set; } 10 | 11 | public Bread Bread { get; set; } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /CSharp/DependencyInversion/DependencyInversion/BreakfastMaker.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Threading.Tasks; 3 | 4 | namespace DependencyInversion 5 | { 6 | public class BreakfastMaker 7 | { 8 | private ICoffeeMachine coffeeMachine; 9 | 10 | private IToaster toaster; 11 | 12 | private CoffeeBean coffeeBean; 13 | 14 | private Milk milk; 15 | 16 | private Bread bread; 17 | 18 | public BreakfastMaker(ICoffeeMachine coffeeMachine, IToaster toaster, CoffeeBean coffeeBean, Milk milk, Bread bread) 19 | { 20 | this.coffeeMachine = coffeeMachine; 21 | this.toaster = toaster; 22 | this.coffeeBean = coffeeBean; 23 | this.milk = milk; 24 | this.bread = bread; 25 | } 26 | 27 | public async Task MakeBreakfast() 28 | { 29 | Console.WriteLine("Start to prepare breakfast."); 30 | 31 | Task coffeeTask = coffeeMachine.MakeCoffee(coffeeBean, milk); 32 | Task breadTask = toaster.ToastBread(bread); 33 | 34 | Coffee coffee = await coffeeTask; 35 | Bread newBread = await breadTask; 36 | 37 | Console.WriteLine("Breakfast is ready."); 38 | 39 | return new Breakfast() 40 | { 41 | Coffee = coffee, 42 | Bread = newBread 43 | }; 44 | } 45 | } 46 | } 47 | -------------------------------------------------------------------------------- /CSharp/DependencyInversion/DependencyInversion/Coffee.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Text; 4 | 5 | namespace DependencyInversion 6 | { 7 | public class Coffee 8 | { 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /CSharp/DependencyInversion/DependencyInversion/CoffeeBean.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Text; 4 | 5 | namespace DependencyInversion 6 | { 7 | public class CoffeeBean 8 | { 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /CSharp/DependencyInversion/DependencyInversion/CoffeeMachine.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Text; 4 | using System.Threading.Tasks; 5 | 6 | namespace DependencyInversion 7 | { 8 | public class CoffeeMachine : ICoffeeMachine 9 | { 10 | public Task MakeCoffee(CoffeeBean bean, Milk milk) 11 | { 12 | Console.WriteLine("Start to make a coffee"); 13 | 14 | var coffee = new Coffee(); 15 | 16 | Console.WriteLine("Coffee is ready"); 17 | 18 | return Task.FromResult(coffee); 19 | } 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /CSharp/DependencyInversion/DependencyInversion/DependencyInversion.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Exe 5 | netcoreapp3.1 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /CSharp/DependencyInversion/DependencyInversion/ICoffeeMachine.cs: -------------------------------------------------------------------------------- 1 | using System.Threading.Tasks; 2 | 3 | namespace DependencyInversion 4 | { 5 | public interface ICoffeeMachine 6 | { 7 | Task MakeCoffee(CoffeeBean bean, Milk milk); 8 | } 9 | } -------------------------------------------------------------------------------- /CSharp/DependencyInversion/DependencyInversion/IToaster.cs: -------------------------------------------------------------------------------- 1 | using System.Threading.Tasks; 2 | 3 | namespace DependencyInversion 4 | { 5 | public interface IToaster 6 | { 7 | Task ToastBread(Bread bread); 8 | } 9 | } -------------------------------------------------------------------------------- /CSharp/DependencyInversion/DependencyInversion/Milk.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Text; 4 | 5 | namespace DependencyInversion 6 | { 7 | public class Milk 8 | { 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /CSharp/DependencyInversion/DependencyInversion/Program.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Threading.Tasks; 3 | 4 | namespace DependencyInversion 5 | { 6 | class Program 7 | { 8 | static async Task Main(string[] args) 9 | { 10 | ICoffeeMachine coffeeMachine = new CoffeeMachine(); 11 | 12 | IToaster toaster = new Toaster(); 13 | 14 | CoffeeBean coffeeBean = new CoffeeBean(); 15 | 16 | Milk milk = new Milk(); 17 | 18 | Bread bread = new Bread(); 19 | 20 | BreakfastMaker breakfastMaker = new BreakfastMaker(coffeeMachine, toaster, coffeeBean, milk, bread); 21 | 22 | var breakfast = await breakfastMaker.MakeBreakfast(); 23 | } 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /CSharp/DependencyInversion/DependencyInversion/Toaster.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Text; 4 | using System.Threading; 5 | using System.Threading.Tasks; 6 | 7 | namespace DependencyInversion 8 | { 9 | public class Toaster : IToaster 10 | { 11 | public async Task ToastBread(Bread bread) 12 | { 13 | Console.WriteLine("Start to toast a bread"); 14 | 15 | await Task.Delay(1000); 16 | 17 | Console.WriteLine("bread is ready"); 18 | 19 | return bread; 20 | } 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /Concurrency/ContosoUniversity/.vs/ContosoUniversity/DesignTimeBuild/.dtbcache.v2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JimmyCoding92/JimmyCodingExamples/d7c916647aaec086f8ed0fa3d4b84c062255210a/Concurrency/ContosoUniversity/.vs/ContosoUniversity/DesignTimeBuild/.dtbcache.v2 -------------------------------------------------------------------------------- /Concurrency/ContosoUniversity/.vs/ContosoUniversity/v16/.suo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JimmyCoding92/JimmyCodingExamples/d7c916647aaec086f8ed0fa3d4b84c062255210a/Concurrency/ContosoUniversity/.vs/ContosoUniversity/v16/.suo -------------------------------------------------------------------------------- /Concurrency/ContosoUniversity/ContosoUniversity.sln: -------------------------------------------------------------------------------- 1 |  2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio Version 16 4 | VisualStudioVersion = 16.0.31613.86 5 | MinimumVisualStudioVersion = 10.0.40219.1 6 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ContosoUniversity", "ContosoUniversity\ContosoUniversity.csproj", "{253D0498-9846-4A0A-8B07-3851D995B259}" 7 | EndProject 8 | Global 9 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 10 | Debug|Any CPU = Debug|Any CPU 11 | Release|Any CPU = Release|Any CPU 12 | EndGlobalSection 13 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 14 | {253D0498-9846-4A0A-8B07-3851D995B259}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 15 | {253D0498-9846-4A0A-8B07-3851D995B259}.Debug|Any CPU.Build.0 = Debug|Any CPU 16 | {253D0498-9846-4A0A-8B07-3851D995B259}.Release|Any CPU.ActiveCfg = Release|Any CPU 17 | {253D0498-9846-4A0A-8B07-3851D995B259}.Release|Any CPU.Build.0 = Release|Any CPU 18 | EndGlobalSection 19 | GlobalSection(SolutionProperties) = preSolution 20 | HideSolutionNode = FALSE 21 | EndGlobalSection 22 | GlobalSection(ExtensibilityGlobals) = postSolution 23 | SolutionGuid = {E4F9DECB-CC3D-4884-9564-E2E9DEB6BF9A} 24 | EndGlobalSection 25 | EndGlobal 26 | -------------------------------------------------------------------------------- /Concurrency/ContosoUniversity/ContosoUniversity/ContosoUniversity.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | net5.0 5 | 6 | 7 | 8 | 9 | 10 | 11 | all 12 | runtime; build; native; contentfiles; analyzers; buildtransitive 13 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /Concurrency/ContosoUniversity/ContosoUniversity/ContosoUniversity.csproj.user: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | <_SelectedScaffolderID>MvcControllerWithContextScaffolder 5 | <_SelectedScaffolderCategoryPath>root/Common 6 | 650 7 | True 8 | False 9 | True 10 | 11 | ContosoUniversity.Data.SchoolContext 12 | False 13 | True 14 | RazorViewEmptyScaffolder 15 | root/Common/MVC/View 16 | 17 | -------------------------------------------------------------------------------- /Concurrency/ContosoUniversity/ContosoUniversity/Data/SchoolContext.cs: -------------------------------------------------------------------------------- 1 | using ContosoUniversity.Models; 2 | using Microsoft.EntityFrameworkCore; 3 | 4 | namespace ContosoUniversity.Data 5 | { 6 | public class SchoolContext : DbContext 7 | { 8 | public SchoolContext(DbContextOptions options) : base(options) 9 | { 10 | } 11 | 12 | public DbSet Courses { get; set; } 13 | public DbSet Enrollments { get; set; } 14 | public DbSet Students { get; set; } 15 | public DbSet Departments { get; set; } 16 | public DbSet Instructors { get; set; } 17 | public DbSet OfficeAssignments { get; set; } 18 | public DbSet CourseAssignments { get; set; } 19 | 20 | protected override void OnModelCreating(ModelBuilder modelBuilder) 21 | { 22 | modelBuilder.Entity().ToTable("Course"); 23 | modelBuilder.Entity().ToTable("Enrollment"); 24 | modelBuilder.Entity().ToTable("Student"); 25 | modelBuilder.Entity() 26 | .Property(p => p.RowVersion).IsConcurrencyToken(); 27 | modelBuilder.Entity().ToTable("Instructor"); 28 | modelBuilder.Entity().ToTable("OfficeAssignment"); 29 | modelBuilder.Entity().ToTable("CourseAssignment"); 30 | 31 | modelBuilder.Entity() 32 | .HasKey(c => new { c.CourseID, c.InstructorID }); 33 | } 34 | } 35 | } -------------------------------------------------------------------------------- /Concurrency/ContosoUniversity/ContosoUniversity/Models/Course.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | using System.ComponentModel.DataAnnotations; 3 | using System.ComponentModel.DataAnnotations.Schema; 4 | 5 | namespace ContosoUniversity.Models 6 | { 7 | public class Course 8 | { 9 | [DatabaseGenerated(DatabaseGeneratedOption.None)] 10 | [Display(Name = "Number")] 11 | public int CourseID { get; set; } 12 | 13 | [StringLength(50, MinimumLength = 3)] 14 | public string Title { get; set; } 15 | 16 | [Range(0, 5)] 17 | public int Credits { get; set; } 18 | 19 | public int DepartmentID { get; set; } 20 | 21 | public Department Department { get; set; } 22 | public ICollection Enrollments { get; set; } 23 | public ICollection CourseAssignments { get; set; } 24 | } 25 | } -------------------------------------------------------------------------------- /Concurrency/ContosoUniversity/ContosoUniversity/Models/CourseAssignment.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.ComponentModel.DataAnnotations; 4 | using System.ComponentModel.DataAnnotations.Schema; 5 | 6 | namespace ContosoUniversity.Models 7 | { 8 | public class CourseAssignment 9 | { 10 | public int InstructorID { get; set; } 11 | public int CourseID { get; set; } 12 | public Instructor Instructor { get; set; } 13 | public Course Course { get; set; } 14 | } 15 | } -------------------------------------------------------------------------------- /Concurrency/ContosoUniversity/ContosoUniversity/Models/Department.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.ComponentModel.DataAnnotations; 4 | using System.ComponentModel.DataAnnotations.Schema; 5 | 6 | namespace ContosoUniversity.Models 7 | { 8 | public class Department 9 | { 10 | public int DepartmentID { get; set; } 11 | 12 | [StringLength(50, MinimumLength = 3)] 13 | public string Name { get; set; } 14 | 15 | [DataType(DataType.Currency)] 16 | [Column(TypeName = "money")] 17 | public decimal Budget { get; set; } 18 | 19 | [DataType(DataType.Date)] 20 | [DisplayFormat(DataFormatString = "{0:yyyy-MM-dd}", ApplyFormatInEditMode = true)] 21 | [Display(Name = "Start Date")] 22 | public DateTime StartDate { get; set; } 23 | 24 | public int? InstructorID { get; set; } 25 | 26 | [Timestamp] 27 | public byte[] RowVersion { get; set; } 28 | 29 | public Instructor Administrator { get; set; } 30 | public ICollection Courses { get; set; } 31 | } 32 | } -------------------------------------------------------------------------------- /Concurrency/ContosoUniversity/ContosoUniversity/Models/Enrollment.cs: -------------------------------------------------------------------------------- 1 | using System.ComponentModel.DataAnnotations; 2 | 3 | namespace ContosoUniversity.Models 4 | { 5 | public enum Grade 6 | { 7 | A, B, C, D, F 8 | } 9 | 10 | public class Enrollment 11 | { 12 | public int EnrollmentID { get; set; } 13 | public int CourseID { get; set; } 14 | public int StudentID { get; set; } 15 | 16 | [DisplayFormat(NullDisplayText = "No grade")] 17 | public Grade? Grade { get; set; } 18 | 19 | public Course Course { get; set; } 20 | public Student Student { get; set; } 21 | } 22 | } -------------------------------------------------------------------------------- /Concurrency/ContosoUniversity/ContosoUniversity/Models/ErrorViewModel.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace ContosoUniversity.Models 4 | { 5 | public class ErrorViewModel 6 | { 7 | public string RequestId { get; set; } 8 | 9 | public bool ShowRequestId => !string.IsNullOrEmpty(RequestId); 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /Concurrency/ContosoUniversity/ContosoUniversity/Models/Instructor.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.ComponentModel.DataAnnotations; 4 | using System.ComponentModel.DataAnnotations.Schema; 5 | 6 | namespace ContosoUniversity.Models 7 | { 8 | public class Instructor 9 | { 10 | public int ID { get; set; } 11 | 12 | [Required] 13 | [Display(Name = "Last Name")] 14 | [StringLength(50)] 15 | public string LastName { get; set; } 16 | 17 | [Required] 18 | [Column("FirstName")] 19 | [Display(Name = "First Name")] 20 | [StringLength(50)] 21 | public string FirstMidName { get; set; } 22 | 23 | [DataType(DataType.Date)] 24 | [DisplayFormat(DataFormatString = "{0:yyyy-MM-dd}", ApplyFormatInEditMode = true)] 25 | [Display(Name = "Hire Date")] 26 | public DateTime HireDate { get; set; } 27 | 28 | [Display(Name = "Full Name")] 29 | public string FullName 30 | { 31 | get { return LastName + ", " + FirstMidName; } 32 | } 33 | 34 | public ICollection CourseAssignments { get; set; } 35 | public OfficeAssignment OfficeAssignment { get; set; } 36 | } 37 | } -------------------------------------------------------------------------------- /Concurrency/ContosoUniversity/ContosoUniversity/Models/OfficeAssignment.cs: -------------------------------------------------------------------------------- 1 | using System.ComponentModel.DataAnnotations; 2 | using System.ComponentModel.DataAnnotations.Schema; 3 | 4 | namespace ContosoUniversity.Models 5 | { 6 | public class OfficeAssignment 7 | { 8 | [Key] 9 | public int InstructorID { get; set; } 10 | [StringLength(50)] 11 | [Display(Name = "Office Location")] 12 | public string Location { get; set; } 13 | 14 | public Instructor Instructor { get; set; } 15 | } 16 | } -------------------------------------------------------------------------------- /Concurrency/ContosoUniversity/ContosoUniversity/Models/SchoolViewModels/AssignedCourseData.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Threading.Tasks; 5 | 6 | namespace ContosoUniversity.Models.SchoolViewModels 7 | { 8 | public class AssignedCourseData 9 | { 10 | public int CourseID { get; set; } 11 | public string Title { get; set; } 12 | public bool Assigned { get; set; } 13 | } 14 | } -------------------------------------------------------------------------------- /Concurrency/ContosoUniversity/ContosoUniversity/Models/SchoolViewModels/EnrollmentDateGroup.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.ComponentModel.DataAnnotations; 3 | 4 | namespace ContosoUniversity.Models.SchoolViewModels 5 | { 6 | public class EnrollmentDateGroup 7 | { 8 | [DataType(DataType.Date)] 9 | public DateTime? EnrollmentDate { get; set; } 10 | 11 | public int StudentCount { get; set; } 12 | } 13 | } -------------------------------------------------------------------------------- /Concurrency/ContosoUniversity/ContosoUniversity/Models/SchoolViewModels/InstructorIndexData.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Threading.Tasks; 5 | 6 | namespace ContosoUniversity.Models.SchoolViewModels 7 | { 8 | public class InstructorIndexData 9 | { 10 | public IEnumerable Instructors { get; set; } 11 | public IEnumerable Courses { get; set; } 12 | public IEnumerable Enrollments { get; set; } 13 | } 14 | } -------------------------------------------------------------------------------- /Concurrency/ContosoUniversity/ContosoUniversity/Models/Student.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.ComponentModel.DataAnnotations; 4 | using System.ComponentModel.DataAnnotations.Schema; 5 | 6 | namespace ContosoUniversity.Models 7 | { 8 | public class Student 9 | { 10 | public int ID { get; set; } 11 | [Required] 12 | [StringLength(50)] 13 | [Display(Name = "Last Name")] 14 | public string LastName { get; set; } 15 | [Required] 16 | [StringLength(50)] 17 | [Column("FirstName")] 18 | [Display(Name = "First Name")] 19 | public string FirstMidName { get; set; } 20 | [DataType(DataType.Date)] 21 | [DisplayFormat(DataFormatString = "{0:yyyy-MM-dd}", ApplyFormatInEditMode = true)] 22 | [Display(Name = "Enrollment Date")] 23 | public DateTime EnrollmentDate { get; set; } 24 | [Display(Name = "Full Name")] 25 | public string FullName 26 | { 27 | get 28 | { 29 | return LastName + ", " + FirstMidName; 30 | } 31 | } 32 | 33 | public ICollection Enrollments { get; set; } 34 | } 35 | } -------------------------------------------------------------------------------- /Concurrency/ContosoUniversity/ContosoUniversity/PaginatedList.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Threading.Tasks; 5 | using Microsoft.EntityFrameworkCore; 6 | 7 | namespace ContosoUniversity 8 | { 9 | public class PaginatedList : List 10 | { 11 | public int PageIndex { get; private set; } 12 | public int TotalPages { get; private set; } 13 | 14 | public PaginatedList(List items, int count, int pageIndex, int pageSize) 15 | { 16 | PageIndex = pageIndex; 17 | TotalPages = (int)Math.Ceiling(count / (double)pageSize); 18 | 19 | this.AddRange(items); 20 | } 21 | 22 | public bool HasPreviousPage 23 | { 24 | get 25 | { 26 | return (PageIndex > 1); 27 | } 28 | } 29 | 30 | public bool HasNextPage 31 | { 32 | get 33 | { 34 | return (PageIndex < TotalPages); 35 | } 36 | } 37 | 38 | public static async Task> CreateAsync(IQueryable source, int pageIndex, int pageSize) 39 | { 40 | var count = await source.CountAsync(); 41 | var items = await source.Skip((pageIndex - 1) * pageSize).Take(pageSize).ToListAsync(); 42 | return new PaginatedList(items, count, pageIndex, pageSize); 43 | } 44 | } 45 | } -------------------------------------------------------------------------------- /Concurrency/ContosoUniversity/ContosoUniversity/Program.cs: -------------------------------------------------------------------------------- 1 | using ContosoUniversity.Data; 2 | using Microsoft.Extensions.DependencyInjection; 3 | using Microsoft.AspNetCore.Hosting; 4 | using Microsoft.Extensions.Hosting; 5 | using Microsoft.Extensions.Logging; 6 | using System; 7 | 8 | namespace ContosoUniversity 9 | { 10 | public class Program 11 | { 12 | public static void Main(string[] args) 13 | { 14 | var host = CreateHostBuilder(args).Build(); 15 | 16 | CreateDbIfNotExists(host); 17 | 18 | host.Run(); 19 | } 20 | 21 | private static void CreateDbIfNotExists(IHost host) 22 | { 23 | using (var scope = host.Services.CreateScope()) 24 | { 25 | var services = scope.ServiceProvider; 26 | try 27 | { 28 | var context = services.GetRequiredService(); 29 | DbInitializer.Initialize(context); 30 | } 31 | catch (Exception ex) 32 | { 33 | var logger = services.GetRequiredService>(); 34 | logger.LogError(ex, "An error occurred creating the DB."); 35 | } 36 | } 37 | } 38 | 39 | public static IHostBuilder CreateHostBuilder(string[] args) => 40 | Host.CreateDefaultBuilder(args) 41 | .ConfigureWebHostDefaults(webBuilder => 42 | { 43 | webBuilder.UseStartup(); 44 | }); 45 | } 46 | } -------------------------------------------------------------------------------- /Concurrency/ContosoUniversity/ContosoUniversity/Properties/launchSettings.json: -------------------------------------------------------------------------------- 1 | { 2 | "iisSettings": { 3 | "windowsAuthentication": false, 4 | "anonymousAuthentication": true, 5 | "iisExpress": { 6 | "applicationUrl": "http://localhost:14047", 7 | "sslPort": 44319 8 | } 9 | }, 10 | "profiles": { 11 | "IIS Express": { 12 | "commandName": "IISExpress", 13 | "launchBrowser": true, 14 | "environmentVariables": { 15 | "ASPNETCORE_ENVIRONMENT": "Development" 16 | } 17 | }, 18 | "ContosoUniversity": { 19 | "commandName": "Project", 20 | "dotnetRunMessages": "true", 21 | "launchBrowser": true, 22 | "applicationUrl": "https://localhost:5001;http://localhost:5000", 23 | "environmentVariables": { 24 | "ASPNETCORE_ENVIRONMENT": "Development" 25 | } 26 | } 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /Concurrency/ContosoUniversity/ContosoUniversity/Views/Courses/Delete.cshtml: -------------------------------------------------------------------------------- 1 | @model ContosoUniversity.Models.Course 2 | 3 | @{ 4 | ViewData["Title"] = "Delete"; 5 | } 6 | 7 |

Delete

8 | 9 |

Are you sure you want to delete this?

10 |
11 |

Course

12 |
13 |
14 |
15 | @Html.DisplayNameFor(model => model.CourseID) 16 |
17 |
18 | @Html.DisplayFor(model => model.CourseID) 19 |
20 |
21 | @Html.DisplayNameFor(model => model.Title) 22 |
23 |
24 | @Html.DisplayFor(model => model.Title) 25 |
26 |
27 | @Html.DisplayNameFor(model => model.Credits) 28 |
29 |
30 | @Html.DisplayFor(model => model.Credits) 31 |
32 |
33 | @Html.DisplayNameFor(model => model.Department) 34 |
35 |
36 | @Html.DisplayFor(model => model.Department.Name) 37 |
38 |
39 | 40 |
41 |
42 | | 43 | Back to List 44 |
45 |
46 |
-------------------------------------------------------------------------------- /Concurrency/ContosoUniversity/ContosoUniversity/Views/Courses/Details.cshtml: -------------------------------------------------------------------------------- 1 | @model ContosoUniversity.Models.Course 2 | 3 | @{ 4 | ViewData["Title"] = "Details"; 5 | } 6 | 7 |

Details

8 | 9 |
10 |

Course

11 |
12 |
13 |
14 | @Html.DisplayNameFor(model => model.Title) 15 |
16 |
17 | @Html.DisplayFor(model => model.Title) 18 |
19 |
20 | @Html.DisplayNameFor(model => model.Credits) 21 |
22 |
23 | @Html.DisplayFor(model => model.Credits) 24 |
25 |
26 | @Html.DisplayNameFor(model => model.Department) 27 |
28 |
29 | @Html.DisplayFor(model => model.Department.DepartmentID) 30 |
31 |
32 |
33 |
34 | Edit | 35 | Back to List 36 |
37 | -------------------------------------------------------------------------------- /Concurrency/ContosoUniversity/ContosoUniversity/Views/Courses/Index.cshtml: -------------------------------------------------------------------------------- 1 | @model IEnumerable 2 | 3 | @{ 4 | ViewData["Title"] = "Courses"; 5 | } 6 | 7 |

Courses

8 | 9 |

10 | Create New 11 |

12 | 13 | 14 | 15 | 18 | 21 | 24 | 27 | 28 | 29 | 30 | 31 | @foreach (var item in Model) 32 | { 33 | 34 | 37 | 40 | 43 | 46 | 51 | 52 | } 53 | 54 |
16 | @Html.DisplayNameFor(model => model.CourseID) 17 | 19 | @Html.DisplayNameFor(model => model.Title) 20 | 22 | @Html.DisplayNameFor(model => model.Credits) 23 | 25 | @Html.DisplayNameFor(model => model.Department) 26 |
35 | @Html.DisplayFor(modelItem => item.CourseID) 36 | 38 | @Html.DisplayFor(modelItem => item.Title) 39 | 41 | @Html.DisplayFor(modelItem => item.Credits) 42 | 44 | @Html.DisplayFor(modelItem => item.Department.Name) 45 | 47 | Edit | 48 | Details | 49 | Delete 50 |
-------------------------------------------------------------------------------- /Concurrency/ContosoUniversity/ContosoUniversity/Views/Departments/Create.cshtml: -------------------------------------------------------------------------------- 1 | @model ContosoUniversity.Models.Department 2 | 3 | @{ 4 | ViewData["Title"] = "Create"; 5 | } 6 | 7 |

Create

8 | 9 |

Department

10 |
11 |
12 |
13 |
14 |
15 |
16 | 17 | 18 | 19 |
20 |
21 | 22 | 23 | 24 |
25 |
26 | 27 | 28 | 29 |
30 |
31 | 32 | 33 |
34 |
35 | 36 |
37 |
38 |
39 |
40 | 41 |
42 | Back to List 43 |
44 | 45 | @section Scripts { 46 | @{await Html.RenderPartialAsync("_ValidationScriptsPartial");} 47 | } 48 | -------------------------------------------------------------------------------- /Concurrency/ContosoUniversity/ContosoUniversity/Views/Departments/Delete.cshtml: -------------------------------------------------------------------------------- 1 | @model ContosoUniversity.Models.Department 2 | 3 | @{ 4 | ViewData["Title"] = "Delete"; 5 | } 6 | 7 |

Delete

8 | 9 |

Are you sure you want to delete this?

10 |
11 |

Department

12 |
13 |
14 |
15 | @Html.DisplayNameFor(model => model.Name) 16 |
17 |
18 | @Html.DisplayFor(model => model.Name) 19 |
20 |
21 | @Html.DisplayNameFor(model => model.Budget) 22 |
23 |
24 | @Html.DisplayFor(model => model.Budget) 25 |
26 |
27 | @Html.DisplayNameFor(model => model.StartDate) 28 |
29 |
30 | @Html.DisplayFor(model => model.StartDate) 31 |
32 |
33 | @Html.DisplayNameFor(model => model.RowVersion) 34 |
35 |
36 | @Html.DisplayFor(model => model.RowVersion) 37 |
38 |
39 | @Html.DisplayNameFor(model => model.Administrator) 40 |
41 |
42 | @Html.DisplayFor(model => model.Administrator.FirstMidName) 43 |
44 |
45 | 46 |
47 | 48 | | 49 | Back to List 50 |
51 |
52 | -------------------------------------------------------------------------------- /Concurrency/ContosoUniversity/ContosoUniversity/Views/Departments/Details.cshtml: -------------------------------------------------------------------------------- 1 | @model ContosoUniversity.Models.Department 2 | 3 | @{ 4 | ViewData["Title"] = "Details"; 5 | } 6 | 7 |

Details

8 | 9 |
10 |

Department

11 |
12 |
13 |
14 | @Html.DisplayNameFor(model => model.Name) 15 |
16 |
17 | @Html.DisplayFor(model => model.Name) 18 |
19 |
20 | @Html.DisplayNameFor(model => model.Budget) 21 |
22 |
23 | @Html.DisplayFor(model => model.Budget) 24 |
25 |
26 | @Html.DisplayNameFor(model => model.StartDate) 27 |
28 |
29 | @Html.DisplayFor(model => model.StartDate) 30 |
31 |
32 | @Html.DisplayNameFor(model => model.RowVersion) 33 |
34 |
35 | @Html.DisplayFor(model => model.RowVersion) 36 |
37 |
38 | @Html.DisplayNameFor(model => model.Administrator) 39 |
40 |
41 | @Html.DisplayFor(model => model.Administrator.FirstMidName) 42 |
43 |
44 |
45 |
46 | Edit | 47 | Back to List 48 |
49 | -------------------------------------------------------------------------------- /Concurrency/ContosoUniversity/ContosoUniversity/Views/Departments/Index.cshtml: -------------------------------------------------------------------------------- 1 | @model IEnumerable 2 | 3 | @{ 4 | ViewData["Title"] = "Departments"; 5 | } 6 | 7 |

Departments

8 | 9 |

10 | Create New 11 |

12 | 13 | 14 | 15 | 18 | 21 | 24 | 27 | 28 | 29 | 30 | 31 | @foreach (var item in Model) 32 | { 33 | 34 | 37 | 40 | 43 | 46 | 51 | 52 | } 53 | 54 |
16 | @Html.DisplayNameFor(model => model.Name) 17 | 19 | @Html.DisplayNameFor(model => model.Budget) 20 | 22 | @Html.DisplayNameFor(model => model.StartDate) 23 | 25 | @Html.DisplayNameFor(model => model.Administrator) 26 |
35 | @Html.DisplayFor(modelItem => item.Name) 36 | 38 | @Html.DisplayFor(modelItem => item.Budget) 39 | 41 | @Html.DisplayFor(modelItem => item.StartDate) 42 | 44 | @Html.DisplayFor(modelItem => item.Administrator.FullName) 45 | 47 | Edit | 48 | Details | 49 | Delete 50 |
-------------------------------------------------------------------------------- /Concurrency/ContosoUniversity/ContosoUniversity/Views/Home/About.cshtml: -------------------------------------------------------------------------------- 1 | @model IEnumerable 2 | 3 | @{ 4 | ViewData["Title"] = "Student Body Statistics"; 5 | } 6 | 7 |

Student Body Statistics

8 | 9 | 10 | 11 | 14 | 17 | 18 | 19 | @foreach (var item in Model) 20 | { 21 | 22 | 25 | 28 | 29 | } 30 |
12 | Enrollment Date 13 | 15 | Students 16 |
23 | @Html.DisplayFor(modelItem => item.EnrollmentDate) 24 | 26 | @item.StudentCount 27 |
-------------------------------------------------------------------------------- /Concurrency/ContosoUniversity/ContosoUniversity/Views/Home/Index.cshtml: -------------------------------------------------------------------------------- 1 | @{ 2 | ViewData["Title"] = "Home Page"; 3 | } 4 | 5 |
6 |

Contoso University

7 |
8 |
9 |
10 |

Welcome to Contoso University

11 |

12 | Contoso University is a sample application that 13 | demonstrates how to use Entity Framework Core in an 14 | ASP.NET Core MVC web application. 15 |

16 |
17 |
18 |

Build it from scratch

19 |

You can build the application by following the steps in a series of tutorials.

20 |

See the tutorial »

21 |
22 |
23 |

Download it

24 |

You can download the completed project from GitHub.

25 |

See project source code »

26 |
27 |
-------------------------------------------------------------------------------- /Concurrency/ContosoUniversity/ContosoUniversity/Views/Home/Privacy.cshtml: -------------------------------------------------------------------------------- 1 | @{ 2 | ViewData["Title"] = "Privacy Policy"; 3 | } 4 |

@ViewData["Title"]

5 | 6 |

Use this page to detail your site's privacy policy.

7 | -------------------------------------------------------------------------------- /Concurrency/ContosoUniversity/ContosoUniversity/Views/Instructors/Delete.cshtml: -------------------------------------------------------------------------------- 1 | @model ContosoUniversity.Models.Instructor 2 | 3 | @{ 4 | ViewData["Title"] = "Delete"; 5 | } 6 | 7 |

Delete

8 | 9 |

Are you sure you want to delete this?

10 |
11 |

Instructor

12 |
13 |
14 |
15 | @Html.DisplayNameFor(model => model.LastName) 16 |
17 |
18 | @Html.DisplayFor(model => model.LastName) 19 |
20 |
21 | @Html.DisplayNameFor(model => model.FirstMidName) 22 |
23 |
24 | @Html.DisplayFor(model => model.FirstMidName) 25 |
26 |
27 | @Html.DisplayNameFor(model => model.HireDate) 28 |
29 |
30 | @Html.DisplayFor(model => model.HireDate) 31 |
32 |
33 | 34 |
35 | 36 | | 37 | Back to List 38 |
39 |
40 | -------------------------------------------------------------------------------- /Concurrency/ContosoUniversity/ContosoUniversity/Views/Instructors/Details.cshtml: -------------------------------------------------------------------------------- 1 | @model ContosoUniversity.Models.Instructor 2 | 3 | @{ 4 | ViewData["Title"] = "Details"; 5 | } 6 | 7 |

Details

8 | 9 |
10 |

Instructor

11 |
12 |
13 |
14 | @Html.DisplayNameFor(model => model.LastName) 15 |
16 |
17 | @Html.DisplayFor(model => model.LastName) 18 |
19 |
20 | @Html.DisplayNameFor(model => model.FirstMidName) 21 |
22 |
23 | @Html.DisplayFor(model => model.FirstMidName) 24 |
25 |
26 | @Html.DisplayNameFor(model => model.HireDate) 27 |
28 |
29 | @Html.DisplayFor(model => model.HireDate) 30 |
31 |
32 |
33 |
34 | Edit | 35 | Back to List 36 |
37 | -------------------------------------------------------------------------------- /Concurrency/ContosoUniversity/ContosoUniversity/Views/Shared/Error.cshtml: -------------------------------------------------------------------------------- 1 | @model ErrorViewModel 2 | @{ 3 | ViewData["Title"] = "Error"; 4 | } 5 | 6 |

Error.

7 |

An error occurred while processing your request.

8 | 9 | @if (Model.ShowRequestId) 10 | { 11 |

12 | Request ID: @Model.RequestId 13 |

14 | } 15 | 16 |

Development Mode

17 |

18 | Swapping to Development environment will display more detailed information about the error that occurred. 19 |

20 |

21 | The Development environment shouldn't be enabled for deployed applications. 22 | It can result in displaying sensitive information from exceptions to end users. 23 | For local debugging, enable the Development environment by setting the ASPNETCORE_ENVIRONMENT environment variable to Development 24 | and restarting the app. 25 |

26 | -------------------------------------------------------------------------------- /Concurrency/ContosoUniversity/ContosoUniversity/Views/Shared/_ValidationScriptsPartial.cshtml: -------------------------------------------------------------------------------- 1 |  2 | 3 | -------------------------------------------------------------------------------- /Concurrency/ContosoUniversity/ContosoUniversity/Views/Students/Create.cshtml: -------------------------------------------------------------------------------- 1 | @model ContosoUniversity.Models.Student 2 | 3 | @{ 4 | ViewData["Title"] = "Create"; 5 | } 6 | 7 |

Create

8 | 9 |

Student

10 |
11 |
12 |
13 |
14 |
15 |
16 | 17 | 18 | 19 |
20 |
21 | 22 | 23 | 24 |
25 |
26 | 27 | 28 | 29 |
30 |
31 | 32 |
33 |
34 |
35 |
36 | 37 |
38 | Back to List 39 |
40 | 41 | @section Scripts { 42 | @{await Html.RenderPartialAsync("_ValidationScriptsPartial");} 43 | } 44 | -------------------------------------------------------------------------------- /Concurrency/ContosoUniversity/ContosoUniversity/Views/Students/Delete.cshtml: -------------------------------------------------------------------------------- 1 | @model ContosoUniversity.Models.Student 2 | 3 | @{ 4 | ViewData["Title"] = "Delete"; 5 | } 6 | 7 |

Delete

8 |

@ViewData["ErrorMessage"]

9 |

Are you sure you want to delete this?

10 |
11 |

Student

12 |
13 |
14 |
15 | @Html.DisplayNameFor(model => model.LastName) 16 |
17 |
18 | @Html.DisplayFor(model => model.LastName) 19 |
20 |
21 | @Html.DisplayNameFor(model => model.FirstMidName) 22 |
23 |
24 | @Html.DisplayFor(model => model.FirstMidName) 25 |
26 |
27 | @Html.DisplayNameFor(model => model.EnrollmentDate) 28 |
29 |
30 | @Html.DisplayFor(model => model.EnrollmentDate) 31 |
32 |
33 | 34 |
35 | 36 | | 37 | Back to List 38 |
39 |
40 | -------------------------------------------------------------------------------- /Concurrency/ContosoUniversity/ContosoUniversity/Views/Students/Edit.cshtml: -------------------------------------------------------------------------------- 1 | @model ContosoUniversity.Models.Student 2 | 3 | @{ 4 | ViewData["Title"] = "Edit"; 5 | } 6 | 7 |

Edit

8 | 9 |

Student

10 |
11 |
12 |
13 |
14 |
15 | 16 |
17 | 18 | 19 | 20 |
21 |
22 | 23 | 24 | 25 |
26 |
27 | 28 | 29 | 30 |
31 |
32 | 33 |
34 |
35 |
36 |
37 | 38 |
39 | Back to List 40 |
41 | 42 | @section Scripts { 43 | @{await Html.RenderPartialAsync("_ValidationScriptsPartial");} 44 | } 45 | -------------------------------------------------------------------------------- /Concurrency/ContosoUniversity/ContosoUniversity/Views/_ViewImports.cshtml: -------------------------------------------------------------------------------- 1 | @using ContosoUniversity 2 | @using ContosoUniversity.Models 3 | @addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers 4 | -------------------------------------------------------------------------------- /Concurrency/ContosoUniversity/ContosoUniversity/Views/_ViewStart.cshtml: -------------------------------------------------------------------------------- 1 | @{ 2 | Layout = "_Layout"; 3 | } 4 | -------------------------------------------------------------------------------- /Concurrency/ContosoUniversity/ContosoUniversity/appsettings.Development.json: -------------------------------------------------------------------------------- 1 | { 2 | "Logging": { 3 | "LogLevel": { 4 | "Default": "Information", 5 | "Microsoft": "Warning", 6 | "Microsoft.Hosting.Lifetime": "Information" 7 | } 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /Concurrency/ContosoUniversity/ContosoUniversity/appsettings.json: -------------------------------------------------------------------------------- 1 | { 2 | "ConnectionStrings": { 3 | "DefaultConnection": "Server=(localdb)\\mssqllocaldb;Database=ContosoUniversity3;Trusted_Connection=True;MultipleActiveResultSets=true" 4 | }, 5 | "Logging": { 6 | "LogLevel": { 7 | "Default": "Information", 8 | "Microsoft": "Warning", 9 | "Microsoft.Hosting.Lifetime": "Information" 10 | } 11 | }, 12 | "AllowedHosts": "*" 13 | } 14 | -------------------------------------------------------------------------------- /Concurrency/ContosoUniversity/ContosoUniversity/bin/Debug/net5.0/ContosoUniversity.Views.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JimmyCoding92/JimmyCodingExamples/d7c916647aaec086f8ed0fa3d4b84c062255210a/Concurrency/ContosoUniversity/ContosoUniversity/bin/Debug/net5.0/ContosoUniversity.Views.dll -------------------------------------------------------------------------------- /Concurrency/ContosoUniversity/ContosoUniversity/bin/Debug/net5.0/ContosoUniversity.Views.pdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JimmyCoding92/JimmyCodingExamples/d7c916647aaec086f8ed0fa3d4b84c062255210a/Concurrency/ContosoUniversity/ContosoUniversity/bin/Debug/net5.0/ContosoUniversity.Views.pdb -------------------------------------------------------------------------------- /Concurrency/ContosoUniversity/ContosoUniversity/bin/Debug/net5.0/ContosoUniversity.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JimmyCoding92/JimmyCodingExamples/d7c916647aaec086f8ed0fa3d4b84c062255210a/Concurrency/ContosoUniversity/ContosoUniversity/bin/Debug/net5.0/ContosoUniversity.dll -------------------------------------------------------------------------------- /Concurrency/ContosoUniversity/ContosoUniversity/bin/Debug/net5.0/ContosoUniversity.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JimmyCoding92/JimmyCodingExamples/d7c916647aaec086f8ed0fa3d4b84c062255210a/Concurrency/ContosoUniversity/ContosoUniversity/bin/Debug/net5.0/ContosoUniversity.exe -------------------------------------------------------------------------------- /Concurrency/ContosoUniversity/ContosoUniversity/bin/Debug/net5.0/ContosoUniversity.pdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JimmyCoding92/JimmyCodingExamples/d7c916647aaec086f8ed0fa3d4b84c062255210a/Concurrency/ContosoUniversity/ContosoUniversity/bin/Debug/net5.0/ContosoUniversity.pdb -------------------------------------------------------------------------------- /Concurrency/ContosoUniversity/ContosoUniversity/bin/Debug/net5.0/ContosoUniversity.runtimeconfig.dev.json: -------------------------------------------------------------------------------- 1 | { 2 | "runtimeOptions": { 3 | "additionalProbingPaths": [ 4 | "C:\\Users\\acmin\\.dotnet\\store\\|arch|\\|tfm|", 5 | "C:\\Users\\acmin\\.nuget\\packages" 6 | ] 7 | } 8 | } -------------------------------------------------------------------------------- /Concurrency/ContosoUniversity/ContosoUniversity/bin/Debug/net5.0/ContosoUniversity.runtimeconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "runtimeOptions": { 3 | "tfm": "net5.0", 4 | "framework": { 5 | "name": "Microsoft.AspNetCore.App", 6 | "version": "5.0.0" 7 | }, 8 | "configProperties": { 9 | "System.GC.Server": true, 10 | "System.Runtime.Serialization.EnableUnsafeBinaryFormatterSerialization": false 11 | } 12 | } 13 | } -------------------------------------------------------------------------------- /Concurrency/ContosoUniversity/ContosoUniversity/bin/Debug/net5.0/Humanizer.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JimmyCoding92/JimmyCodingExamples/d7c916647aaec086f8ed0fa3d4b84c062255210a/Concurrency/ContosoUniversity/ContosoUniversity/bin/Debug/net5.0/Humanizer.dll -------------------------------------------------------------------------------- /Concurrency/ContosoUniversity/ContosoUniversity/bin/Debug/net5.0/Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JimmyCoding92/JimmyCodingExamples/d7c916647aaec086f8ed0fa3d4b84c062255210a/Concurrency/ContosoUniversity/ContosoUniversity/bin/Debug/net5.0/Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore.dll -------------------------------------------------------------------------------- /Concurrency/ContosoUniversity/ContosoUniversity/bin/Debug/net5.0/Microsoft.AspNetCore.Razor.Language.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JimmyCoding92/JimmyCodingExamples/d7c916647aaec086f8ed0fa3d4b84c062255210a/Concurrency/ContosoUniversity/ContosoUniversity/bin/Debug/net5.0/Microsoft.AspNetCore.Razor.Language.dll -------------------------------------------------------------------------------- /Concurrency/ContosoUniversity/ContosoUniversity/bin/Debug/net5.0/Microsoft.Bcl.AsyncInterfaces.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JimmyCoding92/JimmyCodingExamples/d7c916647aaec086f8ed0fa3d4b84c062255210a/Concurrency/ContosoUniversity/ContosoUniversity/bin/Debug/net5.0/Microsoft.Bcl.AsyncInterfaces.dll -------------------------------------------------------------------------------- /Concurrency/ContosoUniversity/ContosoUniversity/bin/Debug/net5.0/Microsoft.CodeAnalysis.CSharp.Workspaces.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JimmyCoding92/JimmyCodingExamples/d7c916647aaec086f8ed0fa3d4b84c062255210a/Concurrency/ContosoUniversity/ContosoUniversity/bin/Debug/net5.0/Microsoft.CodeAnalysis.CSharp.Workspaces.dll -------------------------------------------------------------------------------- /Concurrency/ContosoUniversity/ContosoUniversity/bin/Debug/net5.0/Microsoft.CodeAnalysis.CSharp.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JimmyCoding92/JimmyCodingExamples/d7c916647aaec086f8ed0fa3d4b84c062255210a/Concurrency/ContosoUniversity/ContosoUniversity/bin/Debug/net5.0/Microsoft.CodeAnalysis.CSharp.dll -------------------------------------------------------------------------------- /Concurrency/ContosoUniversity/ContosoUniversity/bin/Debug/net5.0/Microsoft.CodeAnalysis.Razor.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JimmyCoding92/JimmyCodingExamples/d7c916647aaec086f8ed0fa3d4b84c062255210a/Concurrency/ContosoUniversity/ContosoUniversity/bin/Debug/net5.0/Microsoft.CodeAnalysis.Razor.dll -------------------------------------------------------------------------------- /Concurrency/ContosoUniversity/ContosoUniversity/bin/Debug/net5.0/Microsoft.CodeAnalysis.Workspaces.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JimmyCoding92/JimmyCodingExamples/d7c916647aaec086f8ed0fa3d4b84c062255210a/Concurrency/ContosoUniversity/ContosoUniversity/bin/Debug/net5.0/Microsoft.CodeAnalysis.Workspaces.dll -------------------------------------------------------------------------------- /Concurrency/ContosoUniversity/ContosoUniversity/bin/Debug/net5.0/Microsoft.CodeAnalysis.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JimmyCoding92/JimmyCodingExamples/d7c916647aaec086f8ed0fa3d4b84c062255210a/Concurrency/ContosoUniversity/ContosoUniversity/bin/Debug/net5.0/Microsoft.CodeAnalysis.dll -------------------------------------------------------------------------------- /Concurrency/ContosoUniversity/ContosoUniversity/bin/Debug/net5.0/Microsoft.Data.SqlClient.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JimmyCoding92/JimmyCodingExamples/d7c916647aaec086f8ed0fa3d4b84c062255210a/Concurrency/ContosoUniversity/ContosoUniversity/bin/Debug/net5.0/Microsoft.Data.SqlClient.dll -------------------------------------------------------------------------------- /Concurrency/ContosoUniversity/ContosoUniversity/bin/Debug/net5.0/Microsoft.EntityFrameworkCore.Abstractions.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JimmyCoding92/JimmyCodingExamples/d7c916647aaec086f8ed0fa3d4b84c062255210a/Concurrency/ContosoUniversity/ContosoUniversity/bin/Debug/net5.0/Microsoft.EntityFrameworkCore.Abstractions.dll -------------------------------------------------------------------------------- /Concurrency/ContosoUniversity/ContosoUniversity/bin/Debug/net5.0/Microsoft.EntityFrameworkCore.Design.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JimmyCoding92/JimmyCodingExamples/d7c916647aaec086f8ed0fa3d4b84c062255210a/Concurrency/ContosoUniversity/ContosoUniversity/bin/Debug/net5.0/Microsoft.EntityFrameworkCore.Design.dll -------------------------------------------------------------------------------- /Concurrency/ContosoUniversity/ContosoUniversity/bin/Debug/net5.0/Microsoft.EntityFrameworkCore.Relational.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JimmyCoding92/JimmyCodingExamples/d7c916647aaec086f8ed0fa3d4b84c062255210a/Concurrency/ContosoUniversity/ContosoUniversity/bin/Debug/net5.0/Microsoft.EntityFrameworkCore.Relational.dll -------------------------------------------------------------------------------- /Concurrency/ContosoUniversity/ContosoUniversity/bin/Debug/net5.0/Microsoft.EntityFrameworkCore.SqlServer.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JimmyCoding92/JimmyCodingExamples/d7c916647aaec086f8ed0fa3d4b84c062255210a/Concurrency/ContosoUniversity/ContosoUniversity/bin/Debug/net5.0/Microsoft.EntityFrameworkCore.SqlServer.dll -------------------------------------------------------------------------------- /Concurrency/ContosoUniversity/ContosoUniversity/bin/Debug/net5.0/Microsoft.EntityFrameworkCore.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JimmyCoding92/JimmyCodingExamples/d7c916647aaec086f8ed0fa3d4b84c062255210a/Concurrency/ContosoUniversity/ContosoUniversity/bin/Debug/net5.0/Microsoft.EntityFrameworkCore.dll -------------------------------------------------------------------------------- /Concurrency/ContosoUniversity/ContosoUniversity/bin/Debug/net5.0/Microsoft.Extensions.DependencyInjection.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JimmyCoding92/JimmyCodingExamples/d7c916647aaec086f8ed0fa3d4b84c062255210a/Concurrency/ContosoUniversity/ContosoUniversity/bin/Debug/net5.0/Microsoft.Extensions.DependencyInjection.dll -------------------------------------------------------------------------------- /Concurrency/ContosoUniversity/ContosoUniversity/bin/Debug/net5.0/Microsoft.Identity.Client.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JimmyCoding92/JimmyCodingExamples/d7c916647aaec086f8ed0fa3d4b84c062255210a/Concurrency/ContosoUniversity/ContosoUniversity/bin/Debug/net5.0/Microsoft.Identity.Client.dll -------------------------------------------------------------------------------- /Concurrency/ContosoUniversity/ContosoUniversity/bin/Debug/net5.0/Microsoft.IdentityModel.JsonWebTokens.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JimmyCoding92/JimmyCodingExamples/d7c916647aaec086f8ed0fa3d4b84c062255210a/Concurrency/ContosoUniversity/ContosoUniversity/bin/Debug/net5.0/Microsoft.IdentityModel.JsonWebTokens.dll -------------------------------------------------------------------------------- /Concurrency/ContosoUniversity/ContosoUniversity/bin/Debug/net5.0/Microsoft.IdentityModel.Logging.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JimmyCoding92/JimmyCodingExamples/d7c916647aaec086f8ed0fa3d4b84c062255210a/Concurrency/ContosoUniversity/ContosoUniversity/bin/Debug/net5.0/Microsoft.IdentityModel.Logging.dll -------------------------------------------------------------------------------- /Concurrency/ContosoUniversity/ContosoUniversity/bin/Debug/net5.0/Microsoft.IdentityModel.Protocols.OpenIdConnect.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JimmyCoding92/JimmyCodingExamples/d7c916647aaec086f8ed0fa3d4b84c062255210a/Concurrency/ContosoUniversity/ContosoUniversity/bin/Debug/net5.0/Microsoft.IdentityModel.Protocols.OpenIdConnect.dll -------------------------------------------------------------------------------- /Concurrency/ContosoUniversity/ContosoUniversity/bin/Debug/net5.0/Microsoft.IdentityModel.Protocols.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JimmyCoding92/JimmyCodingExamples/d7c916647aaec086f8ed0fa3d4b84c062255210a/Concurrency/ContosoUniversity/ContosoUniversity/bin/Debug/net5.0/Microsoft.IdentityModel.Protocols.dll -------------------------------------------------------------------------------- /Concurrency/ContosoUniversity/ContosoUniversity/bin/Debug/net5.0/Microsoft.IdentityModel.Tokens.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JimmyCoding92/JimmyCodingExamples/d7c916647aaec086f8ed0fa3d4b84c062255210a/Concurrency/ContosoUniversity/ContosoUniversity/bin/Debug/net5.0/Microsoft.IdentityModel.Tokens.dll -------------------------------------------------------------------------------- /Concurrency/ContosoUniversity/ContosoUniversity/bin/Debug/net5.0/Microsoft.VisualStudio.Web.CodeGeneration.Contracts.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JimmyCoding92/JimmyCodingExamples/d7c916647aaec086f8ed0fa3d4b84c062255210a/Concurrency/ContosoUniversity/ContosoUniversity/bin/Debug/net5.0/Microsoft.VisualStudio.Web.CodeGeneration.Contracts.dll -------------------------------------------------------------------------------- /Concurrency/ContosoUniversity/ContosoUniversity/bin/Debug/net5.0/Microsoft.VisualStudio.Web.CodeGeneration.Core.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JimmyCoding92/JimmyCodingExamples/d7c916647aaec086f8ed0fa3d4b84c062255210a/Concurrency/ContosoUniversity/ContosoUniversity/bin/Debug/net5.0/Microsoft.VisualStudio.Web.CodeGeneration.Core.dll -------------------------------------------------------------------------------- /Concurrency/ContosoUniversity/ContosoUniversity/bin/Debug/net5.0/Microsoft.VisualStudio.Web.CodeGeneration.EntityFrameworkCore.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JimmyCoding92/JimmyCodingExamples/d7c916647aaec086f8ed0fa3d4b84c062255210a/Concurrency/ContosoUniversity/ContosoUniversity/bin/Debug/net5.0/Microsoft.VisualStudio.Web.CodeGeneration.EntityFrameworkCore.dll -------------------------------------------------------------------------------- /Concurrency/ContosoUniversity/ContosoUniversity/bin/Debug/net5.0/Microsoft.VisualStudio.Web.CodeGeneration.Templating.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JimmyCoding92/JimmyCodingExamples/d7c916647aaec086f8ed0fa3d4b84c062255210a/Concurrency/ContosoUniversity/ContosoUniversity/bin/Debug/net5.0/Microsoft.VisualStudio.Web.CodeGeneration.Templating.dll -------------------------------------------------------------------------------- /Concurrency/ContosoUniversity/ContosoUniversity/bin/Debug/net5.0/Microsoft.VisualStudio.Web.CodeGeneration.Utils.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JimmyCoding92/JimmyCodingExamples/d7c916647aaec086f8ed0fa3d4b84c062255210a/Concurrency/ContosoUniversity/ContosoUniversity/bin/Debug/net5.0/Microsoft.VisualStudio.Web.CodeGeneration.Utils.dll -------------------------------------------------------------------------------- /Concurrency/ContosoUniversity/ContosoUniversity/bin/Debug/net5.0/Microsoft.VisualStudio.Web.CodeGeneration.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JimmyCoding92/JimmyCodingExamples/d7c916647aaec086f8ed0fa3d4b84c062255210a/Concurrency/ContosoUniversity/ContosoUniversity/bin/Debug/net5.0/Microsoft.VisualStudio.Web.CodeGeneration.dll -------------------------------------------------------------------------------- /Concurrency/ContosoUniversity/ContosoUniversity/bin/Debug/net5.0/Microsoft.VisualStudio.Web.CodeGenerators.Mvc.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JimmyCoding92/JimmyCodingExamples/d7c916647aaec086f8ed0fa3d4b84c062255210a/Concurrency/ContosoUniversity/ContosoUniversity/bin/Debug/net5.0/Microsoft.VisualStudio.Web.CodeGenerators.Mvc.dll -------------------------------------------------------------------------------- /Concurrency/ContosoUniversity/ContosoUniversity/bin/Debug/net5.0/Newtonsoft.Json.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JimmyCoding92/JimmyCodingExamples/d7c916647aaec086f8ed0fa3d4b84c062255210a/Concurrency/ContosoUniversity/ContosoUniversity/bin/Debug/net5.0/Newtonsoft.Json.dll -------------------------------------------------------------------------------- /Concurrency/ContosoUniversity/ContosoUniversity/bin/Debug/net5.0/System.Composition.AttributedModel.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JimmyCoding92/JimmyCodingExamples/d7c916647aaec086f8ed0fa3d4b84c062255210a/Concurrency/ContosoUniversity/ContosoUniversity/bin/Debug/net5.0/System.Composition.AttributedModel.dll -------------------------------------------------------------------------------- /Concurrency/ContosoUniversity/ContosoUniversity/bin/Debug/net5.0/System.Composition.Convention.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JimmyCoding92/JimmyCodingExamples/d7c916647aaec086f8ed0fa3d4b84c062255210a/Concurrency/ContosoUniversity/ContosoUniversity/bin/Debug/net5.0/System.Composition.Convention.dll -------------------------------------------------------------------------------- /Concurrency/ContosoUniversity/ContosoUniversity/bin/Debug/net5.0/System.Composition.Hosting.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JimmyCoding92/JimmyCodingExamples/d7c916647aaec086f8ed0fa3d4b84c062255210a/Concurrency/ContosoUniversity/ContosoUniversity/bin/Debug/net5.0/System.Composition.Hosting.dll -------------------------------------------------------------------------------- /Concurrency/ContosoUniversity/ContosoUniversity/bin/Debug/net5.0/System.Composition.Runtime.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JimmyCoding92/JimmyCodingExamples/d7c916647aaec086f8ed0fa3d4b84c062255210a/Concurrency/ContosoUniversity/ContosoUniversity/bin/Debug/net5.0/System.Composition.Runtime.dll -------------------------------------------------------------------------------- /Concurrency/ContosoUniversity/ContosoUniversity/bin/Debug/net5.0/System.Composition.TypedParts.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JimmyCoding92/JimmyCodingExamples/d7c916647aaec086f8ed0fa3d4b84c062255210a/Concurrency/ContosoUniversity/ContosoUniversity/bin/Debug/net5.0/System.Composition.TypedParts.dll -------------------------------------------------------------------------------- /Concurrency/ContosoUniversity/ContosoUniversity/bin/Debug/net5.0/System.Configuration.ConfigurationManager.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JimmyCoding92/JimmyCodingExamples/d7c916647aaec086f8ed0fa3d4b84c062255210a/Concurrency/ContosoUniversity/ContosoUniversity/bin/Debug/net5.0/System.Configuration.ConfigurationManager.dll -------------------------------------------------------------------------------- /Concurrency/ContosoUniversity/ContosoUniversity/bin/Debug/net5.0/System.Diagnostics.DiagnosticSource.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JimmyCoding92/JimmyCodingExamples/d7c916647aaec086f8ed0fa3d4b84c062255210a/Concurrency/ContosoUniversity/ContosoUniversity/bin/Debug/net5.0/System.Diagnostics.DiagnosticSource.dll -------------------------------------------------------------------------------- /Concurrency/ContosoUniversity/ContosoUniversity/bin/Debug/net5.0/System.IdentityModel.Tokens.Jwt.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JimmyCoding92/JimmyCodingExamples/d7c916647aaec086f8ed0fa3d4b84c062255210a/Concurrency/ContosoUniversity/ContosoUniversity/bin/Debug/net5.0/System.IdentityModel.Tokens.Jwt.dll -------------------------------------------------------------------------------- /Concurrency/ContosoUniversity/ContosoUniversity/bin/Debug/net5.0/System.Runtime.Caching.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JimmyCoding92/JimmyCodingExamples/d7c916647aaec086f8ed0fa3d4b84c062255210a/Concurrency/ContosoUniversity/ContosoUniversity/bin/Debug/net5.0/System.Runtime.Caching.dll -------------------------------------------------------------------------------- /Concurrency/ContosoUniversity/ContosoUniversity/bin/Debug/net5.0/System.Security.Cryptography.ProtectedData.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JimmyCoding92/JimmyCodingExamples/d7c916647aaec086f8ed0fa3d4b84c062255210a/Concurrency/ContosoUniversity/ContosoUniversity/bin/Debug/net5.0/System.Security.Cryptography.ProtectedData.dll -------------------------------------------------------------------------------- /Concurrency/ContosoUniversity/ContosoUniversity/bin/Debug/net5.0/appsettings.Development.json: -------------------------------------------------------------------------------- 1 | { 2 | "Logging": { 3 | "LogLevel": { 4 | "Default": "Information", 5 | "Microsoft": "Warning", 6 | "Microsoft.Hosting.Lifetime": "Information" 7 | } 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /Concurrency/ContosoUniversity/ContosoUniversity/bin/Debug/net5.0/appsettings.json: -------------------------------------------------------------------------------- 1 | { 2 | "ConnectionStrings": { 3 | "DefaultConnection": "Server=(localdb)\\mssqllocaldb;Database=ContosoUniversity3;Trusted_Connection=True;MultipleActiveResultSets=true" 4 | }, 5 | "Logging": { 6 | "LogLevel": { 7 | "Default": "Information", 8 | "Microsoft": "Warning", 9 | "Microsoft.Hosting.Lifetime": "Information" 10 | } 11 | }, 12 | "AllowedHosts": "*" 13 | } 14 | -------------------------------------------------------------------------------- /Concurrency/ContosoUniversity/ContosoUniversity/bin/Debug/net5.0/cs/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JimmyCoding92/JimmyCodingExamples/d7c916647aaec086f8ed0fa3d4b84c062255210a/Concurrency/ContosoUniversity/ContosoUniversity/bin/Debug/net5.0/cs/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll -------------------------------------------------------------------------------- /Concurrency/ContosoUniversity/ContosoUniversity/bin/Debug/net5.0/cs/Microsoft.CodeAnalysis.CSharp.resources.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JimmyCoding92/JimmyCodingExamples/d7c916647aaec086f8ed0fa3d4b84c062255210a/Concurrency/ContosoUniversity/ContosoUniversity/bin/Debug/net5.0/cs/Microsoft.CodeAnalysis.CSharp.resources.dll -------------------------------------------------------------------------------- /Concurrency/ContosoUniversity/ContosoUniversity/bin/Debug/net5.0/cs/Microsoft.CodeAnalysis.Workspaces.resources.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JimmyCoding92/JimmyCodingExamples/d7c916647aaec086f8ed0fa3d4b84c062255210a/Concurrency/ContosoUniversity/ContosoUniversity/bin/Debug/net5.0/cs/Microsoft.CodeAnalysis.Workspaces.resources.dll -------------------------------------------------------------------------------- /Concurrency/ContosoUniversity/ContosoUniversity/bin/Debug/net5.0/cs/Microsoft.CodeAnalysis.resources.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JimmyCoding92/JimmyCodingExamples/d7c916647aaec086f8ed0fa3d4b84c062255210a/Concurrency/ContosoUniversity/ContosoUniversity/bin/Debug/net5.0/cs/Microsoft.CodeAnalysis.resources.dll -------------------------------------------------------------------------------- /Concurrency/ContosoUniversity/ContosoUniversity/bin/Debug/net5.0/de/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JimmyCoding92/JimmyCodingExamples/d7c916647aaec086f8ed0fa3d4b84c062255210a/Concurrency/ContosoUniversity/ContosoUniversity/bin/Debug/net5.0/de/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll -------------------------------------------------------------------------------- /Concurrency/ContosoUniversity/ContosoUniversity/bin/Debug/net5.0/de/Microsoft.CodeAnalysis.CSharp.resources.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JimmyCoding92/JimmyCodingExamples/d7c916647aaec086f8ed0fa3d4b84c062255210a/Concurrency/ContosoUniversity/ContosoUniversity/bin/Debug/net5.0/de/Microsoft.CodeAnalysis.CSharp.resources.dll -------------------------------------------------------------------------------- /Concurrency/ContosoUniversity/ContosoUniversity/bin/Debug/net5.0/de/Microsoft.CodeAnalysis.Workspaces.resources.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JimmyCoding92/JimmyCodingExamples/d7c916647aaec086f8ed0fa3d4b84c062255210a/Concurrency/ContosoUniversity/ContosoUniversity/bin/Debug/net5.0/de/Microsoft.CodeAnalysis.Workspaces.resources.dll -------------------------------------------------------------------------------- /Concurrency/ContosoUniversity/ContosoUniversity/bin/Debug/net5.0/de/Microsoft.CodeAnalysis.resources.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JimmyCoding92/JimmyCodingExamples/d7c916647aaec086f8ed0fa3d4b84c062255210a/Concurrency/ContosoUniversity/ContosoUniversity/bin/Debug/net5.0/de/Microsoft.CodeAnalysis.resources.dll -------------------------------------------------------------------------------- /Concurrency/ContosoUniversity/ContosoUniversity/bin/Debug/net5.0/dotnet-aspnet-codegenerator-design.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JimmyCoding92/JimmyCodingExamples/d7c916647aaec086f8ed0fa3d4b84c062255210a/Concurrency/ContosoUniversity/ContosoUniversity/bin/Debug/net5.0/dotnet-aspnet-codegenerator-design.dll -------------------------------------------------------------------------------- /Concurrency/ContosoUniversity/ContosoUniversity/bin/Debug/net5.0/es/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JimmyCoding92/JimmyCodingExamples/d7c916647aaec086f8ed0fa3d4b84c062255210a/Concurrency/ContosoUniversity/ContosoUniversity/bin/Debug/net5.0/es/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll -------------------------------------------------------------------------------- /Concurrency/ContosoUniversity/ContosoUniversity/bin/Debug/net5.0/es/Microsoft.CodeAnalysis.CSharp.resources.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JimmyCoding92/JimmyCodingExamples/d7c916647aaec086f8ed0fa3d4b84c062255210a/Concurrency/ContosoUniversity/ContosoUniversity/bin/Debug/net5.0/es/Microsoft.CodeAnalysis.CSharp.resources.dll -------------------------------------------------------------------------------- /Concurrency/ContosoUniversity/ContosoUniversity/bin/Debug/net5.0/es/Microsoft.CodeAnalysis.Workspaces.resources.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JimmyCoding92/JimmyCodingExamples/d7c916647aaec086f8ed0fa3d4b84c062255210a/Concurrency/ContosoUniversity/ContosoUniversity/bin/Debug/net5.0/es/Microsoft.CodeAnalysis.Workspaces.resources.dll -------------------------------------------------------------------------------- /Concurrency/ContosoUniversity/ContosoUniversity/bin/Debug/net5.0/es/Microsoft.CodeAnalysis.resources.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JimmyCoding92/JimmyCodingExamples/d7c916647aaec086f8ed0fa3d4b84c062255210a/Concurrency/ContosoUniversity/ContosoUniversity/bin/Debug/net5.0/es/Microsoft.CodeAnalysis.resources.dll -------------------------------------------------------------------------------- /Concurrency/ContosoUniversity/ContosoUniversity/bin/Debug/net5.0/fr/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JimmyCoding92/JimmyCodingExamples/d7c916647aaec086f8ed0fa3d4b84c062255210a/Concurrency/ContosoUniversity/ContosoUniversity/bin/Debug/net5.0/fr/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll -------------------------------------------------------------------------------- /Concurrency/ContosoUniversity/ContosoUniversity/bin/Debug/net5.0/fr/Microsoft.CodeAnalysis.CSharp.resources.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JimmyCoding92/JimmyCodingExamples/d7c916647aaec086f8ed0fa3d4b84c062255210a/Concurrency/ContosoUniversity/ContosoUniversity/bin/Debug/net5.0/fr/Microsoft.CodeAnalysis.CSharp.resources.dll -------------------------------------------------------------------------------- /Concurrency/ContosoUniversity/ContosoUniversity/bin/Debug/net5.0/fr/Microsoft.CodeAnalysis.Workspaces.resources.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JimmyCoding92/JimmyCodingExamples/d7c916647aaec086f8ed0fa3d4b84c062255210a/Concurrency/ContosoUniversity/ContosoUniversity/bin/Debug/net5.0/fr/Microsoft.CodeAnalysis.Workspaces.resources.dll -------------------------------------------------------------------------------- /Concurrency/ContosoUniversity/ContosoUniversity/bin/Debug/net5.0/fr/Microsoft.CodeAnalysis.resources.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JimmyCoding92/JimmyCodingExamples/d7c916647aaec086f8ed0fa3d4b84c062255210a/Concurrency/ContosoUniversity/ContosoUniversity/bin/Debug/net5.0/fr/Microsoft.CodeAnalysis.resources.dll -------------------------------------------------------------------------------- /Concurrency/ContosoUniversity/ContosoUniversity/bin/Debug/net5.0/it/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JimmyCoding92/JimmyCodingExamples/d7c916647aaec086f8ed0fa3d4b84c062255210a/Concurrency/ContosoUniversity/ContosoUniversity/bin/Debug/net5.0/it/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll -------------------------------------------------------------------------------- /Concurrency/ContosoUniversity/ContosoUniversity/bin/Debug/net5.0/it/Microsoft.CodeAnalysis.CSharp.resources.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JimmyCoding92/JimmyCodingExamples/d7c916647aaec086f8ed0fa3d4b84c062255210a/Concurrency/ContosoUniversity/ContosoUniversity/bin/Debug/net5.0/it/Microsoft.CodeAnalysis.CSharp.resources.dll -------------------------------------------------------------------------------- /Concurrency/ContosoUniversity/ContosoUniversity/bin/Debug/net5.0/it/Microsoft.CodeAnalysis.Workspaces.resources.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JimmyCoding92/JimmyCodingExamples/d7c916647aaec086f8ed0fa3d4b84c062255210a/Concurrency/ContosoUniversity/ContosoUniversity/bin/Debug/net5.0/it/Microsoft.CodeAnalysis.Workspaces.resources.dll -------------------------------------------------------------------------------- /Concurrency/ContosoUniversity/ContosoUniversity/bin/Debug/net5.0/it/Microsoft.CodeAnalysis.resources.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JimmyCoding92/JimmyCodingExamples/d7c916647aaec086f8ed0fa3d4b84c062255210a/Concurrency/ContosoUniversity/ContosoUniversity/bin/Debug/net5.0/it/Microsoft.CodeAnalysis.resources.dll -------------------------------------------------------------------------------- /Concurrency/ContosoUniversity/ContosoUniversity/bin/Debug/net5.0/ja/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JimmyCoding92/JimmyCodingExamples/d7c916647aaec086f8ed0fa3d4b84c062255210a/Concurrency/ContosoUniversity/ContosoUniversity/bin/Debug/net5.0/ja/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll -------------------------------------------------------------------------------- /Concurrency/ContosoUniversity/ContosoUniversity/bin/Debug/net5.0/ja/Microsoft.CodeAnalysis.CSharp.resources.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JimmyCoding92/JimmyCodingExamples/d7c916647aaec086f8ed0fa3d4b84c062255210a/Concurrency/ContosoUniversity/ContosoUniversity/bin/Debug/net5.0/ja/Microsoft.CodeAnalysis.CSharp.resources.dll -------------------------------------------------------------------------------- /Concurrency/ContosoUniversity/ContosoUniversity/bin/Debug/net5.0/ja/Microsoft.CodeAnalysis.Workspaces.resources.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JimmyCoding92/JimmyCodingExamples/d7c916647aaec086f8ed0fa3d4b84c062255210a/Concurrency/ContosoUniversity/ContosoUniversity/bin/Debug/net5.0/ja/Microsoft.CodeAnalysis.Workspaces.resources.dll -------------------------------------------------------------------------------- /Concurrency/ContosoUniversity/ContosoUniversity/bin/Debug/net5.0/ja/Microsoft.CodeAnalysis.resources.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JimmyCoding92/JimmyCodingExamples/d7c916647aaec086f8ed0fa3d4b84c062255210a/Concurrency/ContosoUniversity/ContosoUniversity/bin/Debug/net5.0/ja/Microsoft.CodeAnalysis.resources.dll -------------------------------------------------------------------------------- /Concurrency/ContosoUniversity/ContosoUniversity/bin/Debug/net5.0/ko/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JimmyCoding92/JimmyCodingExamples/d7c916647aaec086f8ed0fa3d4b84c062255210a/Concurrency/ContosoUniversity/ContosoUniversity/bin/Debug/net5.0/ko/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll -------------------------------------------------------------------------------- /Concurrency/ContosoUniversity/ContosoUniversity/bin/Debug/net5.0/ko/Microsoft.CodeAnalysis.CSharp.resources.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JimmyCoding92/JimmyCodingExamples/d7c916647aaec086f8ed0fa3d4b84c062255210a/Concurrency/ContosoUniversity/ContosoUniversity/bin/Debug/net5.0/ko/Microsoft.CodeAnalysis.CSharp.resources.dll -------------------------------------------------------------------------------- /Concurrency/ContosoUniversity/ContosoUniversity/bin/Debug/net5.0/ko/Microsoft.CodeAnalysis.Workspaces.resources.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JimmyCoding92/JimmyCodingExamples/d7c916647aaec086f8ed0fa3d4b84c062255210a/Concurrency/ContosoUniversity/ContosoUniversity/bin/Debug/net5.0/ko/Microsoft.CodeAnalysis.Workspaces.resources.dll -------------------------------------------------------------------------------- /Concurrency/ContosoUniversity/ContosoUniversity/bin/Debug/net5.0/ko/Microsoft.CodeAnalysis.resources.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JimmyCoding92/JimmyCodingExamples/d7c916647aaec086f8ed0fa3d4b84c062255210a/Concurrency/ContosoUniversity/ContosoUniversity/bin/Debug/net5.0/ko/Microsoft.CodeAnalysis.resources.dll -------------------------------------------------------------------------------- /Concurrency/ContosoUniversity/ContosoUniversity/bin/Debug/net5.0/pl/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JimmyCoding92/JimmyCodingExamples/d7c916647aaec086f8ed0fa3d4b84c062255210a/Concurrency/ContosoUniversity/ContosoUniversity/bin/Debug/net5.0/pl/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll -------------------------------------------------------------------------------- /Concurrency/ContosoUniversity/ContosoUniversity/bin/Debug/net5.0/pl/Microsoft.CodeAnalysis.CSharp.resources.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JimmyCoding92/JimmyCodingExamples/d7c916647aaec086f8ed0fa3d4b84c062255210a/Concurrency/ContosoUniversity/ContosoUniversity/bin/Debug/net5.0/pl/Microsoft.CodeAnalysis.CSharp.resources.dll -------------------------------------------------------------------------------- /Concurrency/ContosoUniversity/ContosoUniversity/bin/Debug/net5.0/pl/Microsoft.CodeAnalysis.Workspaces.resources.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JimmyCoding92/JimmyCodingExamples/d7c916647aaec086f8ed0fa3d4b84c062255210a/Concurrency/ContosoUniversity/ContosoUniversity/bin/Debug/net5.0/pl/Microsoft.CodeAnalysis.Workspaces.resources.dll -------------------------------------------------------------------------------- /Concurrency/ContosoUniversity/ContosoUniversity/bin/Debug/net5.0/pl/Microsoft.CodeAnalysis.resources.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JimmyCoding92/JimmyCodingExamples/d7c916647aaec086f8ed0fa3d4b84c062255210a/Concurrency/ContosoUniversity/ContosoUniversity/bin/Debug/net5.0/pl/Microsoft.CodeAnalysis.resources.dll -------------------------------------------------------------------------------- /Concurrency/ContosoUniversity/ContosoUniversity/bin/Debug/net5.0/pt-BR/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JimmyCoding92/JimmyCodingExamples/d7c916647aaec086f8ed0fa3d4b84c062255210a/Concurrency/ContosoUniversity/ContosoUniversity/bin/Debug/net5.0/pt-BR/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll -------------------------------------------------------------------------------- /Concurrency/ContosoUniversity/ContosoUniversity/bin/Debug/net5.0/pt-BR/Microsoft.CodeAnalysis.CSharp.resources.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JimmyCoding92/JimmyCodingExamples/d7c916647aaec086f8ed0fa3d4b84c062255210a/Concurrency/ContosoUniversity/ContosoUniversity/bin/Debug/net5.0/pt-BR/Microsoft.CodeAnalysis.CSharp.resources.dll -------------------------------------------------------------------------------- /Concurrency/ContosoUniversity/ContosoUniversity/bin/Debug/net5.0/pt-BR/Microsoft.CodeAnalysis.Workspaces.resources.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JimmyCoding92/JimmyCodingExamples/d7c916647aaec086f8ed0fa3d4b84c062255210a/Concurrency/ContosoUniversity/ContosoUniversity/bin/Debug/net5.0/pt-BR/Microsoft.CodeAnalysis.Workspaces.resources.dll -------------------------------------------------------------------------------- /Concurrency/ContosoUniversity/ContosoUniversity/bin/Debug/net5.0/pt-BR/Microsoft.CodeAnalysis.resources.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JimmyCoding92/JimmyCodingExamples/d7c916647aaec086f8ed0fa3d4b84c062255210a/Concurrency/ContosoUniversity/ContosoUniversity/bin/Debug/net5.0/pt-BR/Microsoft.CodeAnalysis.resources.dll -------------------------------------------------------------------------------- /Concurrency/ContosoUniversity/ContosoUniversity/bin/Debug/net5.0/ref/ContosoUniversity.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JimmyCoding92/JimmyCodingExamples/d7c916647aaec086f8ed0fa3d4b84c062255210a/Concurrency/ContosoUniversity/ContosoUniversity/bin/Debug/net5.0/ref/ContosoUniversity.dll -------------------------------------------------------------------------------- /Concurrency/ContosoUniversity/ContosoUniversity/bin/Debug/net5.0/ru/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JimmyCoding92/JimmyCodingExamples/d7c916647aaec086f8ed0fa3d4b84c062255210a/Concurrency/ContosoUniversity/ContosoUniversity/bin/Debug/net5.0/ru/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll -------------------------------------------------------------------------------- /Concurrency/ContosoUniversity/ContosoUniversity/bin/Debug/net5.0/ru/Microsoft.CodeAnalysis.CSharp.resources.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JimmyCoding92/JimmyCodingExamples/d7c916647aaec086f8ed0fa3d4b84c062255210a/Concurrency/ContosoUniversity/ContosoUniversity/bin/Debug/net5.0/ru/Microsoft.CodeAnalysis.CSharp.resources.dll -------------------------------------------------------------------------------- /Concurrency/ContosoUniversity/ContosoUniversity/bin/Debug/net5.0/ru/Microsoft.CodeAnalysis.Workspaces.resources.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JimmyCoding92/JimmyCodingExamples/d7c916647aaec086f8ed0fa3d4b84c062255210a/Concurrency/ContosoUniversity/ContosoUniversity/bin/Debug/net5.0/ru/Microsoft.CodeAnalysis.Workspaces.resources.dll -------------------------------------------------------------------------------- /Concurrency/ContosoUniversity/ContosoUniversity/bin/Debug/net5.0/ru/Microsoft.CodeAnalysis.resources.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JimmyCoding92/JimmyCodingExamples/d7c916647aaec086f8ed0fa3d4b84c062255210a/Concurrency/ContosoUniversity/ContosoUniversity/bin/Debug/net5.0/ru/Microsoft.CodeAnalysis.resources.dll -------------------------------------------------------------------------------- /Concurrency/ContosoUniversity/ContosoUniversity/bin/Debug/net5.0/runtimes/unix/lib/netcoreapp3.1/Microsoft.Data.SqlClient.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JimmyCoding92/JimmyCodingExamples/d7c916647aaec086f8ed0fa3d4b84c062255210a/Concurrency/ContosoUniversity/ContosoUniversity/bin/Debug/net5.0/runtimes/unix/lib/netcoreapp3.1/Microsoft.Data.SqlClient.dll -------------------------------------------------------------------------------- /Concurrency/ContosoUniversity/ContosoUniversity/bin/Debug/net5.0/runtimes/win-arm/lib/net5.0/dotnet-aspnet-codegenerator-design.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JimmyCoding92/JimmyCodingExamples/d7c916647aaec086f8ed0fa3d4b84c062255210a/Concurrency/ContosoUniversity/ContosoUniversity/bin/Debug/net5.0/runtimes/win-arm/lib/net5.0/dotnet-aspnet-codegenerator-design.exe -------------------------------------------------------------------------------- /Concurrency/ContosoUniversity/ContosoUniversity/bin/Debug/net5.0/runtimes/win-arm/native/Microsoft.Data.SqlClient.SNI.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JimmyCoding92/JimmyCodingExamples/d7c916647aaec086f8ed0fa3d4b84c062255210a/Concurrency/ContosoUniversity/ContosoUniversity/bin/Debug/net5.0/runtimes/win-arm/native/Microsoft.Data.SqlClient.SNI.dll -------------------------------------------------------------------------------- /Concurrency/ContosoUniversity/ContosoUniversity/bin/Debug/net5.0/runtimes/win-arm/native/Microsoft.Data.SqlClient.SNI.pdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JimmyCoding92/JimmyCodingExamples/d7c916647aaec086f8ed0fa3d4b84c062255210a/Concurrency/ContosoUniversity/ContosoUniversity/bin/Debug/net5.0/runtimes/win-arm/native/Microsoft.Data.SqlClient.SNI.pdb -------------------------------------------------------------------------------- /Concurrency/ContosoUniversity/ContosoUniversity/bin/Debug/net5.0/runtimes/win-arm64/lib/net5.0/dotnet-aspnet-codegenerator-design.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JimmyCoding92/JimmyCodingExamples/d7c916647aaec086f8ed0fa3d4b84c062255210a/Concurrency/ContosoUniversity/ContosoUniversity/bin/Debug/net5.0/runtimes/win-arm64/lib/net5.0/dotnet-aspnet-codegenerator-design.exe -------------------------------------------------------------------------------- /Concurrency/ContosoUniversity/ContosoUniversity/bin/Debug/net5.0/runtimes/win-arm64/native/Microsoft.Data.SqlClient.SNI.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JimmyCoding92/JimmyCodingExamples/d7c916647aaec086f8ed0fa3d4b84c062255210a/Concurrency/ContosoUniversity/ContosoUniversity/bin/Debug/net5.0/runtimes/win-arm64/native/Microsoft.Data.SqlClient.SNI.dll -------------------------------------------------------------------------------- /Concurrency/ContosoUniversity/ContosoUniversity/bin/Debug/net5.0/runtimes/win-arm64/native/Microsoft.Data.SqlClient.SNI.pdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JimmyCoding92/JimmyCodingExamples/d7c916647aaec086f8ed0fa3d4b84c062255210a/Concurrency/ContosoUniversity/ContosoUniversity/bin/Debug/net5.0/runtimes/win-arm64/native/Microsoft.Data.SqlClient.SNI.pdb -------------------------------------------------------------------------------- /Concurrency/ContosoUniversity/ContosoUniversity/bin/Debug/net5.0/runtimes/win-x64/native/Microsoft.Data.SqlClient.SNI.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JimmyCoding92/JimmyCodingExamples/d7c916647aaec086f8ed0fa3d4b84c062255210a/Concurrency/ContosoUniversity/ContosoUniversity/bin/Debug/net5.0/runtimes/win-x64/native/Microsoft.Data.SqlClient.SNI.dll -------------------------------------------------------------------------------- /Concurrency/ContosoUniversity/ContosoUniversity/bin/Debug/net5.0/runtimes/win-x64/native/Microsoft.Data.SqlClient.SNI.pdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JimmyCoding92/JimmyCodingExamples/d7c916647aaec086f8ed0fa3d4b84c062255210a/Concurrency/ContosoUniversity/ContosoUniversity/bin/Debug/net5.0/runtimes/win-x64/native/Microsoft.Data.SqlClient.SNI.pdb -------------------------------------------------------------------------------- /Concurrency/ContosoUniversity/ContosoUniversity/bin/Debug/net5.0/runtimes/win-x86/native/Microsoft.Data.SqlClient.SNI.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JimmyCoding92/JimmyCodingExamples/d7c916647aaec086f8ed0fa3d4b84c062255210a/Concurrency/ContosoUniversity/ContosoUniversity/bin/Debug/net5.0/runtimes/win-x86/native/Microsoft.Data.SqlClient.SNI.dll -------------------------------------------------------------------------------- /Concurrency/ContosoUniversity/ContosoUniversity/bin/Debug/net5.0/runtimes/win-x86/native/Microsoft.Data.SqlClient.SNI.pdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JimmyCoding92/JimmyCodingExamples/d7c916647aaec086f8ed0fa3d4b84c062255210a/Concurrency/ContosoUniversity/ContosoUniversity/bin/Debug/net5.0/runtimes/win-x86/native/Microsoft.Data.SqlClient.SNI.pdb -------------------------------------------------------------------------------- /Concurrency/ContosoUniversity/ContosoUniversity/bin/Debug/net5.0/runtimes/win/lib/netcoreapp3.1/Microsoft.Data.SqlClient.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JimmyCoding92/JimmyCodingExamples/d7c916647aaec086f8ed0fa3d4b84c062255210a/Concurrency/ContosoUniversity/ContosoUniversity/bin/Debug/net5.0/runtimes/win/lib/netcoreapp3.1/Microsoft.Data.SqlClient.dll -------------------------------------------------------------------------------- /Concurrency/ContosoUniversity/ContosoUniversity/bin/Debug/net5.0/runtimes/win/lib/netstandard2.0/System.Runtime.Caching.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JimmyCoding92/JimmyCodingExamples/d7c916647aaec086f8ed0fa3d4b84c062255210a/Concurrency/ContosoUniversity/ContosoUniversity/bin/Debug/net5.0/runtimes/win/lib/netstandard2.0/System.Runtime.Caching.dll -------------------------------------------------------------------------------- /Concurrency/ContosoUniversity/ContosoUniversity/bin/Debug/net5.0/runtimes/win/lib/netstandard2.0/System.Security.Cryptography.ProtectedData.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JimmyCoding92/JimmyCodingExamples/d7c916647aaec086f8ed0fa3d4b84c062255210a/Concurrency/ContosoUniversity/ContosoUniversity/bin/Debug/net5.0/runtimes/win/lib/netstandard2.0/System.Security.Cryptography.ProtectedData.dll -------------------------------------------------------------------------------- /Concurrency/ContosoUniversity/ContosoUniversity/bin/Debug/net5.0/tr/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JimmyCoding92/JimmyCodingExamples/d7c916647aaec086f8ed0fa3d4b84c062255210a/Concurrency/ContosoUniversity/ContosoUniversity/bin/Debug/net5.0/tr/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll -------------------------------------------------------------------------------- /Concurrency/ContosoUniversity/ContosoUniversity/bin/Debug/net5.0/tr/Microsoft.CodeAnalysis.CSharp.resources.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JimmyCoding92/JimmyCodingExamples/d7c916647aaec086f8ed0fa3d4b84c062255210a/Concurrency/ContosoUniversity/ContosoUniversity/bin/Debug/net5.0/tr/Microsoft.CodeAnalysis.CSharp.resources.dll -------------------------------------------------------------------------------- /Concurrency/ContosoUniversity/ContosoUniversity/bin/Debug/net5.0/tr/Microsoft.CodeAnalysis.Workspaces.resources.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JimmyCoding92/JimmyCodingExamples/d7c916647aaec086f8ed0fa3d4b84c062255210a/Concurrency/ContosoUniversity/ContosoUniversity/bin/Debug/net5.0/tr/Microsoft.CodeAnalysis.Workspaces.resources.dll -------------------------------------------------------------------------------- /Concurrency/ContosoUniversity/ContosoUniversity/bin/Debug/net5.0/tr/Microsoft.CodeAnalysis.resources.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JimmyCoding92/JimmyCodingExamples/d7c916647aaec086f8ed0fa3d4b84c062255210a/Concurrency/ContosoUniversity/ContosoUniversity/bin/Debug/net5.0/tr/Microsoft.CodeAnalysis.resources.dll -------------------------------------------------------------------------------- /Concurrency/ContosoUniversity/ContosoUniversity/bin/Debug/net5.0/zh-Hans/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JimmyCoding92/JimmyCodingExamples/d7c916647aaec086f8ed0fa3d4b84c062255210a/Concurrency/ContosoUniversity/ContosoUniversity/bin/Debug/net5.0/zh-Hans/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll -------------------------------------------------------------------------------- /Concurrency/ContosoUniversity/ContosoUniversity/bin/Debug/net5.0/zh-Hans/Microsoft.CodeAnalysis.CSharp.resources.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JimmyCoding92/JimmyCodingExamples/d7c916647aaec086f8ed0fa3d4b84c062255210a/Concurrency/ContosoUniversity/ContosoUniversity/bin/Debug/net5.0/zh-Hans/Microsoft.CodeAnalysis.CSharp.resources.dll -------------------------------------------------------------------------------- /Concurrency/ContosoUniversity/ContosoUniversity/bin/Debug/net5.0/zh-Hans/Microsoft.CodeAnalysis.Workspaces.resources.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JimmyCoding92/JimmyCodingExamples/d7c916647aaec086f8ed0fa3d4b84c062255210a/Concurrency/ContosoUniversity/ContosoUniversity/bin/Debug/net5.0/zh-Hans/Microsoft.CodeAnalysis.Workspaces.resources.dll -------------------------------------------------------------------------------- /Concurrency/ContosoUniversity/ContosoUniversity/bin/Debug/net5.0/zh-Hans/Microsoft.CodeAnalysis.resources.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JimmyCoding92/JimmyCodingExamples/d7c916647aaec086f8ed0fa3d4b84c062255210a/Concurrency/ContosoUniversity/ContosoUniversity/bin/Debug/net5.0/zh-Hans/Microsoft.CodeAnalysis.resources.dll -------------------------------------------------------------------------------- /Concurrency/ContosoUniversity/ContosoUniversity/bin/Debug/net5.0/zh-Hant/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JimmyCoding92/JimmyCodingExamples/d7c916647aaec086f8ed0fa3d4b84c062255210a/Concurrency/ContosoUniversity/ContosoUniversity/bin/Debug/net5.0/zh-Hant/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll -------------------------------------------------------------------------------- /Concurrency/ContosoUniversity/ContosoUniversity/bin/Debug/net5.0/zh-Hant/Microsoft.CodeAnalysis.CSharp.resources.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JimmyCoding92/JimmyCodingExamples/d7c916647aaec086f8ed0fa3d4b84c062255210a/Concurrency/ContosoUniversity/ContosoUniversity/bin/Debug/net5.0/zh-Hant/Microsoft.CodeAnalysis.CSharp.resources.dll -------------------------------------------------------------------------------- /Concurrency/ContosoUniversity/ContosoUniversity/bin/Debug/net5.0/zh-Hant/Microsoft.CodeAnalysis.Workspaces.resources.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JimmyCoding92/JimmyCodingExamples/d7c916647aaec086f8ed0fa3d4b84c062255210a/Concurrency/ContosoUniversity/ContosoUniversity/bin/Debug/net5.0/zh-Hant/Microsoft.CodeAnalysis.Workspaces.resources.dll -------------------------------------------------------------------------------- /Concurrency/ContosoUniversity/ContosoUniversity/bin/Debug/net5.0/zh-Hant/Microsoft.CodeAnalysis.resources.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JimmyCoding92/JimmyCodingExamples/d7c916647aaec086f8ed0fa3d4b84c062255210a/Concurrency/ContosoUniversity/ContosoUniversity/bin/Debug/net5.0/zh-Hant/Microsoft.CodeAnalysis.resources.dll -------------------------------------------------------------------------------- /Concurrency/ContosoUniversity/ContosoUniversity/obj/ContosoUniversity.csproj.EntityFrameworkCore.targets: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /Concurrency/ContosoUniversity/ContosoUniversity/obj/ContosoUniversity.csproj.nuget.g.targets: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | $(MSBuildAllProjects);$(MSBuildThisFileFullPath) 5 | 6 | -------------------------------------------------------------------------------- /Concurrency/ContosoUniversity/ContosoUniversity/obj/Debug/net5.0/.NETCoreApp,Version=v5.0.AssemblyAttributes.cs: -------------------------------------------------------------------------------- 1 | // 2 | using System; 3 | using System.Reflection; 4 | [assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETCoreApp,Version=v5.0", FrameworkDisplayName = "")] 5 | -------------------------------------------------------------------------------- /Concurrency/ContosoUniversity/ContosoUniversity/obj/Debug/net5.0/ContosoUniversity.AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // 3 | // This code was generated by a tool. 4 | // Runtime Version:4.0.30319.42000 5 | // 6 | // Changes to this file may cause incorrect behavior and will be lost if 7 | // the code is regenerated. 8 | // 9 | //------------------------------------------------------------------------------ 10 | 11 | using System; 12 | using System.Reflection; 13 | 14 | [assembly: System.Reflection.AssemblyCompanyAttribute("ContosoUniversity")] 15 | [assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")] 16 | [assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] 17 | [assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0")] 18 | [assembly: System.Reflection.AssemblyProductAttribute("ContosoUniversity")] 19 | [assembly: System.Reflection.AssemblyTitleAttribute("ContosoUniversity")] 20 | [assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] 21 | 22 | // Generated by the MSBuild WriteCodeFragment class. 23 | 24 | -------------------------------------------------------------------------------- /Concurrency/ContosoUniversity/ContosoUniversity/obj/Debug/net5.0/ContosoUniversity.AssemblyInfoInputs.cache: -------------------------------------------------------------------------------- 1 | 90e062877957355c45174c832d789c510b0ca5a3 2 | -------------------------------------------------------------------------------- /Concurrency/ContosoUniversity/ContosoUniversity/obj/Debug/net5.0/ContosoUniversity.GeneratedMSBuildEditorConfig.editorconfig: -------------------------------------------------------------------------------- 1 | is_global = true 2 | build_property.TargetFramework = net5.0 3 | build_property.TargetPlatformMinVersion = 4 | build_property.UsingMicrosoftNETSdkWeb = true 5 | build_property.ProjectTypeGuids = 6 | build_property.PublishSingleFile = 7 | build_property.IncludeAllContentForSelfExtract = 8 | build_property._SupportedPlatformList = Android,iOS,Linux,macOS,Windows 9 | build_property.RootNamespace = ContosoUniversity 10 | build_property.ProjectDir = F:\project\JimmyCodingExamples\Concurrency\ContosoUniversity\ContosoUniversity\ 11 | -------------------------------------------------------------------------------- /Concurrency/ContosoUniversity/ContosoUniversity/obj/Debug/net5.0/ContosoUniversity.MvcApplicationPartsAssemblyInfo.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JimmyCoding92/JimmyCodingExamples/d7c916647aaec086f8ed0fa3d4b84c062255210a/Concurrency/ContosoUniversity/ContosoUniversity/obj/Debug/net5.0/ContosoUniversity.MvcApplicationPartsAssemblyInfo.cache -------------------------------------------------------------------------------- /Concurrency/ContosoUniversity/ContosoUniversity/obj/Debug/net5.0/ContosoUniversity.RazorAssemblyInfo.cache: -------------------------------------------------------------------------------- 1 | fe4d238143ab1fd15ad34a3e44e823c66913636c 2 | -------------------------------------------------------------------------------- /Concurrency/ContosoUniversity/ContosoUniversity/obj/Debug/net5.0/ContosoUniversity.RazorAssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // 3 | // This code was generated by a tool. 4 | // Runtime Version:4.0.30319.42000 5 | // 6 | // Changes to this file may cause incorrect behavior and will be lost if 7 | // the code is regenerated. 8 | // 9 | //------------------------------------------------------------------------------ 10 | 11 | using System; 12 | using System.Reflection; 13 | 14 | [assembly: Microsoft.AspNetCore.Mvc.ApplicationParts.RelatedAssemblyAttribute("ContosoUniversity.Views")] 15 | 16 | // Generated by the MSBuild WriteCodeFragment class. 17 | 18 | -------------------------------------------------------------------------------- /Concurrency/ContosoUniversity/ContosoUniversity/obj/Debug/net5.0/ContosoUniversity.RazorCoreGenerate.cache: -------------------------------------------------------------------------------- 1 | cb25402062b72c967e41db68a1ca7ffbde00c39d 2 | -------------------------------------------------------------------------------- /Concurrency/ContosoUniversity/ContosoUniversity/obj/Debug/net5.0/ContosoUniversity.RazorTargetAssemblyInfo.cache: -------------------------------------------------------------------------------- 1 | ab253aa6504280be8e46e428e5b132a10cf287b0 2 | -------------------------------------------------------------------------------- /Concurrency/ContosoUniversity/ContosoUniversity/obj/Debug/net5.0/ContosoUniversity.RazorTargetAssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // 3 | // This code was generated by a tool. 4 | // Runtime Version:4.0.30319.42000 5 | // 6 | // Changes to this file may cause incorrect behavior and will be lost if 7 | // the code is regenerated. 8 | // 9 | //------------------------------------------------------------------------------ 10 | 11 | using System; 12 | using System.Reflection; 13 | 14 | [assembly: Microsoft.AspNetCore.Mvc.ApplicationParts.ProvideApplicationPartFactoryAttribute("Microsoft.AspNetCore.Mvc.ApplicationParts.CompiledRazorAssemblyApplicationPartFac" + 15 | "tory, Microsoft.AspNetCore.Mvc.Razor")] 16 | [assembly: System.Reflection.AssemblyCompanyAttribute("ContosoUniversity")] 17 | [assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")] 18 | [assembly: System.Reflection.AssemblyProductAttribute("ContosoUniversity")] 19 | [assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] 20 | [assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0")] 21 | [assembly: System.Reflection.AssemblyTitleAttribute("ContosoUniversity.Views")] 22 | [assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] 23 | 24 | // Generated by the MSBuild WriteCodeFragment class. 25 | 26 | -------------------------------------------------------------------------------- /Concurrency/ContosoUniversity/ContosoUniversity/obj/Debug/net5.0/ContosoUniversity.TagHelpers.input.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JimmyCoding92/JimmyCodingExamples/d7c916647aaec086f8ed0fa3d4b84c062255210a/Concurrency/ContosoUniversity/ContosoUniversity/obj/Debug/net5.0/ContosoUniversity.TagHelpers.input.cache -------------------------------------------------------------------------------- /Concurrency/ContosoUniversity/ContosoUniversity/obj/Debug/net5.0/ContosoUniversity.Views.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JimmyCoding92/JimmyCodingExamples/d7c916647aaec086f8ed0fa3d4b84c062255210a/Concurrency/ContosoUniversity/ContosoUniversity/obj/Debug/net5.0/ContosoUniversity.Views.dll -------------------------------------------------------------------------------- /Concurrency/ContosoUniversity/ContosoUniversity/obj/Debug/net5.0/ContosoUniversity.Views.pdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JimmyCoding92/JimmyCodingExamples/d7c916647aaec086f8ed0fa3d4b84c062255210a/Concurrency/ContosoUniversity/ContosoUniversity/obj/Debug/net5.0/ContosoUniversity.Views.pdb -------------------------------------------------------------------------------- /Concurrency/ContosoUniversity/ContosoUniversity/obj/Debug/net5.0/ContosoUniversity.assets.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JimmyCoding92/JimmyCodingExamples/d7c916647aaec086f8ed0fa3d4b84c062255210a/Concurrency/ContosoUniversity/ContosoUniversity/obj/Debug/net5.0/ContosoUniversity.assets.cache -------------------------------------------------------------------------------- /Concurrency/ContosoUniversity/ContosoUniversity/obj/Debug/net5.0/ContosoUniversity.csproj.AssemblyReference.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JimmyCoding92/JimmyCodingExamples/d7c916647aaec086f8ed0fa3d4b84c062255210a/Concurrency/ContosoUniversity/ContosoUniversity/obj/Debug/net5.0/ContosoUniversity.csproj.AssemblyReference.cache -------------------------------------------------------------------------------- /Concurrency/ContosoUniversity/ContosoUniversity/obj/Debug/net5.0/ContosoUniversity.csproj.CopyComplete: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JimmyCoding92/JimmyCodingExamples/d7c916647aaec086f8ed0fa3d4b84c062255210a/Concurrency/ContosoUniversity/ContosoUniversity/obj/Debug/net5.0/ContosoUniversity.csproj.CopyComplete -------------------------------------------------------------------------------- /Concurrency/ContosoUniversity/ContosoUniversity/obj/Debug/net5.0/ContosoUniversity.csproj.CoreCompileInputs.cache: -------------------------------------------------------------------------------- 1 | 0430daf07f98c9606853b128e6e38f24b4b6e064 2 | -------------------------------------------------------------------------------- /Concurrency/ContosoUniversity/ContosoUniversity/obj/Debug/net5.0/ContosoUniversity.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JimmyCoding92/JimmyCodingExamples/d7c916647aaec086f8ed0fa3d4b84c062255210a/Concurrency/ContosoUniversity/ContosoUniversity/obj/Debug/net5.0/ContosoUniversity.dll -------------------------------------------------------------------------------- /Concurrency/ContosoUniversity/ContosoUniversity/obj/Debug/net5.0/ContosoUniversity.genruntimeconfig.cache: -------------------------------------------------------------------------------- 1 | 7f6d5f87f91d07218055a7d5234303b390306587 2 | -------------------------------------------------------------------------------- /Concurrency/ContosoUniversity/ContosoUniversity/obj/Debug/net5.0/ContosoUniversity.pdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JimmyCoding92/JimmyCodingExamples/d7c916647aaec086f8ed0fa3d4b84c062255210a/Concurrency/ContosoUniversity/ContosoUniversity/obj/Debug/net5.0/ContosoUniversity.pdb -------------------------------------------------------------------------------- /Concurrency/ContosoUniversity/ContosoUniversity/obj/Debug/net5.0/apphost.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JimmyCoding92/JimmyCodingExamples/d7c916647aaec086f8ed0fa3d4b84c062255210a/Concurrency/ContosoUniversity/ContosoUniversity/obj/Debug/net5.0/apphost.exe -------------------------------------------------------------------------------- /Concurrency/ContosoUniversity/ContosoUniversity/obj/Debug/net5.0/ref/ContosoUniversity.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JimmyCoding92/JimmyCodingExamples/d7c916647aaec086f8ed0fa3d4b84c062255210a/Concurrency/ContosoUniversity/ContosoUniversity/obj/Debug/net5.0/ref/ContosoUniversity.dll -------------------------------------------------------------------------------- /Concurrency/ContosoUniversity/ContosoUniversity/obj/Debug/net5.0/staticwebassets/ContosoUniversity.StaticWebAssets.Manifest.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JimmyCoding92/JimmyCodingExamples/d7c916647aaec086f8ed0fa3d4b84c062255210a/Concurrency/ContosoUniversity/ContosoUniversity/obj/Debug/net5.0/staticwebassets/ContosoUniversity.StaticWebAssets.Manifest.cache -------------------------------------------------------------------------------- /Concurrency/ContosoUniversity/ContosoUniversity/obj/Debug/net5.0/staticwebassets/ContosoUniversity.StaticWebAssets.xml: -------------------------------------------------------------------------------- 1 |  -------------------------------------------------------------------------------- /Concurrency/ContosoUniversity/ContosoUniversity/wwwroot/css/site.css: -------------------------------------------------------------------------------- 1 | /* Please see documentation at https://docs.microsoft.com/aspnet/core/client-side/bundling-and-minification 2 | for details on configuring this project to bundle and minify static web assets. */ 3 | 4 | a.navbar-brand { 5 | white-space: normal; 6 | text-align: center; 7 | word-break: break-all; 8 | } 9 | 10 | /* Provide sufficient contrast against white background */ 11 | a { 12 | color: #0366d6; 13 | } 14 | 15 | .btn-primary { 16 | color: #fff; 17 | background-color: #1b6ec2; 18 | border-color: #1861ac; 19 | } 20 | 21 | .nav-pills .nav-link.active, .nav-pills .show > .nav-link { 22 | color: #fff; 23 | background-color: #1b6ec2; 24 | border-color: #1861ac; 25 | } 26 | 27 | /* Sticky footer styles 28 | -------------------------------------------------- */ 29 | html { 30 | font-size: 14px; 31 | } 32 | @media (min-width: 768px) { 33 | html { 34 | font-size: 16px; 35 | } 36 | } 37 | 38 | .border-top { 39 | border-top: 1px solid #e5e5e5; 40 | } 41 | .border-bottom { 42 | border-bottom: 1px solid #e5e5e5; 43 | } 44 | 45 | .box-shadow { 46 | box-shadow: 0 .25rem .75rem rgba(0, 0, 0, .05); 47 | } 48 | 49 | button.accept-policy { 50 | font-size: 1rem; 51 | line-height: inherit; 52 | } 53 | 54 | /* Sticky footer styles 55 | -------------------------------------------------- */ 56 | html { 57 | position: relative; 58 | min-height: 100%; 59 | } 60 | 61 | body { 62 | /* Margin bottom by footer height */ 63 | margin-bottom: 60px; 64 | } 65 | .footer { 66 | position: absolute; 67 | bottom: 0; 68 | width: 100%; 69 | white-space: nowrap; 70 | line-height: 60px; /* Vertically center the text there */ 71 | } 72 | -------------------------------------------------------------------------------- /Concurrency/ContosoUniversity/ContosoUniversity/wwwroot/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JimmyCoding92/JimmyCodingExamples/d7c916647aaec086f8ed0fa3d4b84c062255210a/Concurrency/ContosoUniversity/ContosoUniversity/wwwroot/favicon.ico -------------------------------------------------------------------------------- /Concurrency/ContosoUniversity/ContosoUniversity/wwwroot/js/site.js: -------------------------------------------------------------------------------- 1 | // Please see documentation at https://docs.microsoft.com/aspnet/core/client-side/bundling-and-minification 2 | // for details on configuring this project to bundle and minify static web assets. 3 | 4 | // Write your JavaScript code. 5 | -------------------------------------------------------------------------------- /Concurrency/ContosoUniversity/ContosoUniversity/wwwroot/lib/bootstrap/LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2011-2018 Twitter, Inc. 4 | Copyright (c) 2011-2018 The Bootstrap Authors 5 | 6 | Permission is hereby granted, free of charge, to any person obtaining a copy 7 | of this software and associated documentation files (the "Software"), to deal 8 | in the Software without restriction, including without limitation the rights 9 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | copies of the Software, and to permit persons to whom the Software is 11 | furnished to do so, subject to the following conditions: 12 | 13 | The above copyright notice and this permission notice shall be included in 14 | all copies or substantial portions of the Software. 15 | 16 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 22 | THE SOFTWARE. 23 | -------------------------------------------------------------------------------- /Concurrency/ContosoUniversity/ContosoUniversity/wwwroot/lib/jquery-validation-unobtrusive/LICENSE.txt: -------------------------------------------------------------------------------- 1 | Copyright (c) .NET Foundation. All rights reserved. 2 | 3 | Licensed under the Apache License, Version 2.0 (the "License"); you may not use 4 | these files except in compliance with the License. You may obtain a copy of the 5 | License at 6 | 7 | http://www.apache.org/licenses/LICENSE-2.0 8 | 9 | Unless required by applicable law or agreed to in writing, software distributed 10 | under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR 11 | CONDITIONS OF ANY KIND, either express or implied. See the License for the 12 | specific language governing permissions and limitations under the License. 13 | -------------------------------------------------------------------------------- /Concurrency/ContosoUniversity/ContosoUniversity/wwwroot/lib/jquery-validation/LICENSE.md: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | ===================== 3 | 4 | Copyright Jörn Zaefferer 5 | 6 | Permission is hereby granted, free of charge, to any person obtaining a copy 7 | of this software and associated documentation files (the "Software"), to deal 8 | in the Software without restriction, including without limitation the rights 9 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | copies of the Software, and to permit persons to whom the Software is 11 | furnished to do so, subject to the following conditions: 12 | 13 | The above copyright notice and this permission notice shall be included in 14 | all copies or substantial portions of the Software. 15 | 16 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 22 | THE SOFTWARE. 23 | -------------------------------------------------------------------------------- /Concurrency/ContosoUniversity/ContosoUniversity/wwwroot/lib/jquery/LICENSE.txt: -------------------------------------------------------------------------------- 1 | Copyright JS Foundation and other contributors, https://js.foundation/ 2 | 3 | This software consists of voluntary contributions made by many 4 | individuals. For exact contribution history, see the revision history 5 | available at https://github.com/jquery/jquery 6 | 7 | The following license applies to all parts of this software except as 8 | documented below: 9 | 10 | ==== 11 | 12 | Permission is hereby granted, free of charge, to any person obtaining 13 | a copy of this software and associated documentation files (the 14 | "Software"), to deal in the Software without restriction, including 15 | without limitation the rights to use, copy, modify, merge, publish, 16 | distribute, sublicense, and/or sell copies of the Software, and to 17 | permit persons to whom the Software is furnished to do so, subject to 18 | the following conditions: 19 | 20 | The above copyright notice and this permission notice shall be 21 | included in all copies or substantial portions of the Software. 22 | 23 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 24 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 25 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 26 | NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE 27 | LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION 28 | OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION 29 | WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 30 | 31 | ==== 32 | 33 | All files located in the node_modules and external directories are 34 | externally maintained libraries used by this software which have their 35 | own licenses; we recommend you read them, as their terms may differ from 36 | the terms above. 37 | -------------------------------------------------------------------------------- /Container/DockerExample/.dockerignore: -------------------------------------------------------------------------------- 1 | **/.classpath 2 | **/.dockerignore 3 | **/.env 4 | **/.git 5 | **/.gitignore 6 | **/.project 7 | **/.settings 8 | **/.toolstarget 9 | **/.vs 10 | **/.vscode 11 | **/*.*proj.user 12 | **/*.dbmdl 13 | **/*.jfm 14 | **/azds.yaml 15 | **/bin 16 | **/charts 17 | **/docker-compose* 18 | **/compose* 19 | **/Dockerfile* 20 | **/node_modules 21 | **/npm-debug.log 22 | **/obj 23 | **/secrets.dev.yaml 24 | **/values.dev.yaml 25 | README.md 26 | -------------------------------------------------------------------------------- /Container/DockerExample/Data/ApplicationDbContext.cs: -------------------------------------------------------------------------------- 1 | using DockerExampleWithSQL.Models; 2 | using Microsoft.EntityFrameworkCore; 3 | 4 | namespace DockerExampleWithSQL.Data 5 | { 6 | public class ApplicationDbContext : DbContext 7 | { 8 | public DbSet Users {get;set;} 9 | 10 | public ApplicationDbContext(DbContextOptions options) : base(options) 11 | { 12 | 13 | } 14 | } 15 | } -------------------------------------------------------------------------------- /Container/DockerExample/DockerExampleWithSQL.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | net5.0 4 | 5 | 6 | 7 | 8 | runtime; build; native; contentfiles; analyzers; buildtransitive 9 | all 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /Container/DockerExample/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM mcr.microsoft.com/dotnet/aspnet:5.0 AS base 2 | WORKDIR /app 3 | EXPOSE 80 4 | 5 | ENV ASPNETCORE_URLS=http://+:80 6 | 7 | FROM mcr.microsoft.com/dotnet/sdk:5.0 AS build 8 | WORKDIR /src 9 | COPY ["DockerExampleWithSQL.csproj", "./"] 10 | RUN dotnet restore "DockerExampleWithSQL.csproj" 11 | COPY . . 12 | WORKDIR "/src/." 13 | RUN dotnet build "DockerExampleWithSQL.csproj" -c Release -o /app/build 14 | 15 | FROM build AS publish 16 | RUN dotnet publish "DockerExampleWithSQL.csproj" -c Release -o /app/publish 17 | 18 | FROM base AS final 19 | WORKDIR /app 20 | COPY --from=publish /app/publish . 21 | ENTRYPOINT ["dotnet", "DockerExampleWithSQL.dll"] 22 | -------------------------------------------------------------------------------- /Container/DockerExample/Migrations/20210114225834_initial migration.Designer.cs: -------------------------------------------------------------------------------- 1 | // 2 | using DockerExampleWithSQL.Data; 3 | using Microsoft.EntityFrameworkCore; 4 | using Microsoft.EntityFrameworkCore.Infrastructure; 5 | using Microsoft.EntityFrameworkCore.Metadata; 6 | using Microsoft.EntityFrameworkCore.Migrations; 7 | using Microsoft.EntityFrameworkCore.Storage.ValueConversion; 8 | 9 | namespace DockerExampleWithSQL.Migrations 10 | { 11 | [DbContext(typeof(ApplicationDbContext))] 12 | [Migration("20210114225834_initial migration")] 13 | partial class initialmigration 14 | { 15 | protected override void BuildTargetModel(ModelBuilder modelBuilder) 16 | { 17 | #pragma warning disable 612, 618 18 | modelBuilder 19 | .UseIdentityColumns() 20 | .HasAnnotation("Relational:MaxIdentifierLength", 128) 21 | .HasAnnotation("ProductVersion", "5.0.2"); 22 | 23 | modelBuilder.Entity("DockerExampleWithSQL.Models.User", b => 24 | { 25 | b.Property("Id") 26 | .ValueGeneratedOnAdd() 27 | .HasColumnType("int") 28 | .UseIdentityColumn(); 29 | 30 | b.Property("Name") 31 | .HasColumnType("nvarchar(max)"); 32 | 33 | b.HasKey("Id"); 34 | 35 | b.ToTable("Users"); 36 | }); 37 | #pragma warning restore 612, 618 38 | } 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /Container/DockerExample/Migrations/20210114225834_initial migration.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.EntityFrameworkCore.Migrations; 2 | 3 | namespace DockerExampleWithSQL.Migrations 4 | { 5 | public partial class initialmigration : Migration 6 | { 7 | protected override void Up(MigrationBuilder migrationBuilder) 8 | { 9 | migrationBuilder.CreateTable( 10 | name: "Users", 11 | columns: table => new 12 | { 13 | Id = table.Column(type: "int", nullable: false) 14 | .Annotation("SqlServer:Identity", "1, 1"), 15 | Name = table.Column(type: "nvarchar(max)", nullable: true) 16 | }, 17 | constraints: table => 18 | { 19 | table.PrimaryKey("PK_Users", x => x.Id); 20 | }); 21 | } 22 | 23 | protected override void Down(MigrationBuilder migrationBuilder) 24 | { 25 | migrationBuilder.DropTable( 26 | name: "Users"); 27 | } 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /Container/DockerExample/Migrations/ApplicationDbContextModelSnapshot.cs: -------------------------------------------------------------------------------- 1 | // 2 | using DockerExampleWithSQL.Data; 3 | using Microsoft.EntityFrameworkCore; 4 | using Microsoft.EntityFrameworkCore.Infrastructure; 5 | using Microsoft.EntityFrameworkCore.Metadata; 6 | using Microsoft.EntityFrameworkCore.Storage.ValueConversion; 7 | 8 | namespace DockerExampleWithSQL.Migrations 9 | { 10 | [DbContext(typeof(ApplicationDbContext))] 11 | partial class ApplicationDbContextModelSnapshot : ModelSnapshot 12 | { 13 | protected override void BuildModel(ModelBuilder modelBuilder) 14 | { 15 | #pragma warning disable 612, 618 16 | modelBuilder 17 | .UseIdentityColumns() 18 | .HasAnnotation("Relational:MaxIdentifierLength", 128) 19 | .HasAnnotation("ProductVersion", "5.0.2"); 20 | 21 | modelBuilder.Entity("DockerExampleWithSQL.Models.User", b => 22 | { 23 | b.Property("Id") 24 | .ValueGeneratedOnAdd() 25 | .HasColumnType("int") 26 | .UseIdentityColumn(); 27 | 28 | b.Property("Name") 29 | .HasColumnType("nvarchar(max)"); 30 | 31 | b.HasKey("Id"); 32 | 33 | b.ToTable("Users"); 34 | }); 35 | #pragma warning restore 612, 618 36 | } 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /Container/DockerExample/Models/ErrorViewModel.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace DockerExampleWithSQL.Models 4 | { 5 | public class ErrorViewModel 6 | { 7 | public string RequestId { get; set; } 8 | 9 | public bool ShowRequestId => !string.IsNullOrEmpty(RequestId); 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /Container/DockerExample/Models/User.cs: -------------------------------------------------------------------------------- 1 | namespace DockerExampleWithSQL.Models 2 | { 3 | public class User 4 | { 5 | public int Id { get; set; } 6 | public string Name { get; set; } 7 | } 8 | } -------------------------------------------------------------------------------- /Container/DockerExample/Program.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Threading.Tasks; 5 | using Microsoft.AspNetCore.Hosting; 6 | using Microsoft.Extensions.Configuration; 7 | using Microsoft.Extensions.Hosting; 8 | using Microsoft.Extensions.Logging; 9 | 10 | namespace DockerExampleWithSQL 11 | { 12 | public class Program 13 | { 14 | public static void Main(string[] args) 15 | { 16 | CreateHostBuilder(args).Build().Run(); 17 | } 18 | 19 | public static IHostBuilder CreateHostBuilder(string[] args) => 20 | Host.CreateDefaultBuilder(args) 21 | .ConfigureWebHostDefaults(webBuilder => 22 | { 23 | webBuilder.UseUrls("http://*:80"); 24 | webBuilder.UseStartup(); 25 | }); 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /Container/DockerExample/Properties/launchSettings.json: -------------------------------------------------------------------------------- 1 | { 2 | "iisSettings": { 3 | "windowsAuthentication": false, 4 | "anonymousAuthentication": true, 5 | "iisExpress": { 6 | "applicationUrl": "http://localhost:62099", 7 | "sslPort": 44385 8 | } 9 | }, 10 | "profiles": { 11 | "IIS Express": { 12 | "commandName": "IISExpress", 13 | "launchBrowser": true, 14 | "environmentVariables": { 15 | "ASPNETCORE_ENVIRONMENT": "Development" 16 | } 17 | }, 18 | "DockerExampleWithSQL": { 19 | "commandName": "Project", 20 | "dotnetRunMessages": "true", 21 | "launchBrowser": true, 22 | "applicationUrl": "https://localhost:5001;http://localhost:5000", 23 | "environmentVariables": { 24 | "ASPNETCORE_ENVIRONMENT": "Development" 25 | } 26 | } 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /Container/DockerExample/Services/DatabaseManagementService.cs: -------------------------------------------------------------------------------- 1 | using DockerExampleWithSQL.Data; 2 | using Microsoft.AspNetCore.Builder; 3 | using Microsoft.EntityFrameworkCore; 4 | using Microsoft.Extensions.DependencyInjection; 5 | 6 | namespace DockerExampleWithSQL.Services 7 | { 8 | public static class DatabaseManagementService 9 | { 10 | // Getting the scope of our database context 11 | public static void MigrationInitialisation(IApplicationBuilder app) 12 | { 13 | using (var serviceScope = app.ApplicationServices.CreateScope()) 14 | { 15 | // Takes all of our migrations files and apply them against the database in case they are not implemented 16 | serviceScope.ServiceProvider.GetService().Database.Migrate(); 17 | } 18 | } 19 | } 20 | } -------------------------------------------------------------------------------- /Container/DockerExample/Views/Home/Create.cshtml: -------------------------------------------------------------------------------- 1 | @model DockerExampleWithSQL.Models.User 2 | 3 |
4 |
5 |
6 |
7 | 8 | 9 |
10 |
11 |
12 |
13 | 19 |
20 |
21 |
-------------------------------------------------------------------------------- /Container/DockerExample/Views/Home/Index.cshtml: -------------------------------------------------------------------------------- 1 | @model List 2 | @{ 3 | ViewData["Title"] = "Home Page"; 4 | } 5 | 6 | AddUser 7 | 8 | 9 |
10 | 11 |
    12 | @foreach (var item in Model) 13 | { 14 |
  • @item.Name
  • 15 | } 16 |
17 |
18 | -------------------------------------------------------------------------------- /Container/DockerExample/Views/Home/Privacy.cshtml: -------------------------------------------------------------------------------- 1 | @{ 2 | ViewData["Title"] = "Privacy Policy"; 3 | } 4 |

@ViewData["Title"]

5 | 6 |

Use this page to detail your site's privacy policy.

7 | -------------------------------------------------------------------------------- /Container/DockerExample/Views/Shared/Error.cshtml: -------------------------------------------------------------------------------- 1 | @model ErrorViewModel 2 | @{ 3 | ViewData["Title"] = "Error"; 4 | } 5 | 6 |

Error.

7 |

An error occurred while processing your request.

8 | 9 | @if (Model.ShowRequestId) 10 | { 11 |

12 | Request ID: @Model.RequestId 13 |

14 | } 15 | 16 |

Development Mode

17 |

18 | Swapping to Development environment will display more detailed information about the error that occurred. 19 |

20 |

21 | The Development environment shouldn't be enabled for deployed applications. 22 | It can result in displaying sensitive information from exceptions to end users. 23 | For local debugging, enable the Development environment by setting the ASPNETCORE_ENVIRONMENT environment variable to Development 24 | and restarting the app. 25 |

26 | -------------------------------------------------------------------------------- /Container/DockerExample/Views/Shared/_ValidationScriptsPartial.cshtml: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /Container/DockerExample/Views/_ViewImports.cshtml: -------------------------------------------------------------------------------- 1 | @using DockerExampleWithSQL 2 | @using DockerExampleWithSQL.Models 3 | @addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers 4 | -------------------------------------------------------------------------------- /Container/DockerExample/Views/_ViewStart.cshtml: -------------------------------------------------------------------------------- 1 | @{ 2 | Layout = "_Layout"; 3 | } 4 | -------------------------------------------------------------------------------- /Container/DockerExample/appsettings.Development.json: -------------------------------------------------------------------------------- 1 | { 2 | "Logging": { 3 | "LogLevel": { 4 | "Default": "Information", 5 | "Microsoft": "Warning", 6 | "Microsoft.Hosting.Lifetime": "Information" 7 | } 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /Container/DockerExample/appsettings.json: -------------------------------------------------------------------------------- 1 | { 2 | "Logging": { 3 | "LogLevel": { 4 | "Default": "Information", 5 | "Microsoft": "Warning", 6 | "Microsoft.Hosting.Lifetime": "Information" 7 | } 8 | }, 9 | "AllowedHosts": "*" 10 | } 11 | -------------------------------------------------------------------------------- /Container/DockerExample/docker-compose.debug.yml: -------------------------------------------------------------------------------- 1 | # Please refer https://aka.ms/HTTPSinContainer on how to setup an https developer certificate for your ASP .NET Core service. 2 | 3 | version: '3.4' 4 | 5 | services: 6 | dockerexamplewithsql: 7 | image: dockerexamplewithsql 8 | build: 9 | context: . 10 | dockerfile: ./Dockerfile 11 | ports: 12 | - 5000:5000 13 | environment: 14 | - ASPNETCORE_ENVIRONMENT=Development 15 | volumes: 16 | - ~/.vsdbg:c:\remote_debugger:rw 17 | -------------------------------------------------------------------------------- /Container/DockerExample/docker-compose.yml: -------------------------------------------------------------------------------- 1 | # Please refer https://aka.ms/HTTPSinContainer on how to setup an https developer certificate for your ASP .NET Core service. 2 | 3 | version: '3.4' 4 | 5 | services: 6 | dockerexamplewithsql: 7 | image: dockerexamplewithsql 8 | build: 9 | context: . 10 | dockerfile: ./Dockerfile 11 | environment: 12 | DbServer: "ms-sql-server" 13 | DbPort: "1433" 14 | DbUser: "SA" 15 | Password: "1HappyP@ssword" 16 | Database: "userDb" 17 | ports: 18 | - 8090:80 19 | ms-sql-server: 20 | image: mcr.microsoft.com/mssql/server:2017-latest-ubuntu 21 | environment: 22 | ACCEPT_EULA: "Y" 23 | SA_PASSWORD: "1HappyP@ssword" 24 | MSSQL_PID: Express 25 | ports: 26 | - "1433:1433" 27 | -------------------------------------------------------------------------------- /Container/DockerExample/nuget.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /Container/DockerExample/wwwroot/css/site.css: -------------------------------------------------------------------------------- 1 | /* Please see documentation at https://docs.microsoft.com/aspnet/core/client-side/bundling-and-minification 2 | for details on configuring this project to bundle and minify static web assets. */ 3 | 4 | a.navbar-brand { 5 | white-space: normal; 6 | text-align: center; 7 | word-break: break-all; 8 | } 9 | 10 | /* Provide sufficient contrast against white background */ 11 | a { 12 | color: #0366d6; 13 | } 14 | 15 | .btn-primary { 16 | color: #fff; 17 | background-color: #1b6ec2; 18 | border-color: #1861ac; 19 | } 20 | 21 | .nav-pills .nav-link.active, .nav-pills .show > .nav-link { 22 | color: #fff; 23 | background-color: #1b6ec2; 24 | border-color: #1861ac; 25 | } 26 | 27 | /* Sticky footer styles 28 | -------------------------------------------------- */ 29 | html { 30 | font-size: 14px; 31 | } 32 | @media (min-width: 768px) { 33 | html { 34 | font-size: 16px; 35 | } 36 | } 37 | 38 | .border-top { 39 | border-top: 1px solid #e5e5e5; 40 | } 41 | .border-bottom { 42 | border-bottom: 1px solid #e5e5e5; 43 | } 44 | 45 | .box-shadow { 46 | box-shadow: 0 .25rem .75rem rgba(0, 0, 0, .05); 47 | } 48 | 49 | button.accept-policy { 50 | font-size: 1rem; 51 | line-height: inherit; 52 | } 53 | 54 | /* Sticky footer styles 55 | -------------------------------------------------- */ 56 | html { 57 | position: relative; 58 | min-height: 100%; 59 | } 60 | 61 | body { 62 | /* Margin bottom by footer height */ 63 | margin-bottom: 60px; 64 | } 65 | .footer { 66 | position: absolute; 67 | bottom: 0; 68 | width: 100%; 69 | white-space: nowrap; 70 | line-height: 60px; /* Vertically center the text there */ 71 | } 72 | -------------------------------------------------------------------------------- /Container/DockerExample/wwwroot/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JimmyCoding92/JimmyCodingExamples/d7c916647aaec086f8ed0fa3d4b84c062255210a/Container/DockerExample/wwwroot/favicon.ico -------------------------------------------------------------------------------- /Container/DockerExample/wwwroot/js/site.js: -------------------------------------------------------------------------------- 1 | // Please see documentation at https://docs.microsoft.com/aspnet/core/client-side/bundling-and-minification 2 | // for details on configuring this project to bundle and minify static web assets. 3 | 4 | // Write your JavaScript code. 5 | -------------------------------------------------------------------------------- /Container/DockerExample/wwwroot/lib/bootstrap/LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2011-2018 Twitter, Inc. 4 | Copyright (c) 2011-2018 The Bootstrap Authors 5 | 6 | Permission is hereby granted, free of charge, to any person obtaining a copy 7 | of this software and associated documentation files (the "Software"), to deal 8 | in the Software without restriction, including without limitation the rights 9 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | copies of the Software, and to permit persons to whom the Software is 11 | furnished to do so, subject to the following conditions: 12 | 13 | The above copyright notice and this permission notice shall be included in 14 | all copies or substantial portions of the Software. 15 | 16 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 22 | THE SOFTWARE. 23 | -------------------------------------------------------------------------------- /Container/DockerExample/wwwroot/lib/jquery-validation-unobtrusive/LICENSE.txt: -------------------------------------------------------------------------------- 1 | Copyright (c) .NET Foundation. All rights reserved. 2 | 3 | Licensed under the Apache License, Version 2.0 (the "License"); you may not use 4 | these files except in compliance with the License. You may obtain a copy of the 5 | License at 6 | 7 | http://www.apache.org/licenses/LICENSE-2.0 8 | 9 | Unless required by applicable law or agreed to in writing, software distributed 10 | under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR 11 | CONDITIONS OF ANY KIND, either express or implied. See the License for the 12 | specific language governing permissions and limitations under the License. 13 | -------------------------------------------------------------------------------- /Container/DockerExample/wwwroot/lib/jquery/LICENSE.txt: -------------------------------------------------------------------------------- 1 | Copyright JS Foundation and other contributors, https://js.foundation/ 2 | 3 | This software consists of voluntary contributions made by many 4 | individuals. For exact contribution history, see the revision history 5 | available at https://github.com/jquery/jquery 6 | 7 | The following license applies to all parts of this software except as 8 | documented below: 9 | 10 | ==== 11 | 12 | Permission is hereby granted, free of charge, to any person obtaining 13 | a copy of this software and associated documentation files (the 14 | "Software"), to deal in the Software without restriction, including 15 | without limitation the rights to use, copy, modify, merge, publish, 16 | distribute, sublicense, and/or sell copies of the Software, and to 17 | permit persons to whom the Software is furnished to do so, subject to 18 | the following conditions: 19 | 20 | The above copyright notice and this permission notice shall be 21 | included in all copies or substantial portions of the Software. 22 | 23 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 24 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 25 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 26 | NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE 27 | LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION 28 | OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION 29 | WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 30 | 31 | ==== 32 | 33 | All files located in the node_modules and external directories are 34 | externally maintained libraries used by this software which have their 35 | own licenses; we recommend you read them, as their terms may differ from 36 | the terms above. 37 | -------------------------------------------------------------------------------- /Container/KubernetesApplication/myapp-configmap.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: ConfigMap 3 | metadata: 4 | name: myapp-configmap 5 | data: 6 | db_server: "sql-service" 7 | db_port: "1433" 8 | database: "userDb" -------------------------------------------------------------------------------- /Container/KubernetesApplication/myapp.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: apps/v1 2 | kind: Deployment 3 | metadata: 4 | name: myapp 5 | labels: 6 | app: myapp 7 | spec: 8 | replicas: 1 9 | selector: 10 | matchLabels: 11 | app: myapp 12 | template: 13 | metadata: 14 | labels: 15 | app: myapp 16 | spec: 17 | containers: 18 | - name: myapp 19 | image: jimmycoding92/jimmy-coding-example-app:v1 20 | ports: 21 | - containerPort: 80 22 | env: 23 | - name: DbServer 24 | valueFrom: 25 | configMapKeyRef: 26 | name: myapp-configmap 27 | key: db_server 28 | - name: DbPort 29 | valueFrom: 30 | configMapKeyRef: 31 | name: myapp-configmap 32 | key: db_port 33 | - name: DbUser 34 | valueFrom: 35 | secretKeyRef: 36 | name: sql-secret 37 | key: sql-username 38 | - name: Password 39 | valueFrom: 40 | secretKeyRef: 41 | name: sql-secret 42 | key: sql-password 43 | - name: Database 44 | valueFrom: 45 | configMapKeyRef: 46 | name: myapp-configmap 47 | key: database 48 | --- 49 | apiVersion: v1 50 | kind: Service 51 | metadata: 52 | name: myapp-service 53 | spec: 54 | selector: 55 | app: myapp 56 | type: LoadBalancer 57 | ports: 58 | - port: 80 59 | targetPort: 80 60 | nodePort: 30000 61 | -------------------------------------------------------------------------------- /Container/KubernetesApplication/sql-configmap.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: ConfigMap 3 | metadata: 4 | name: sql-configmap 5 | data: 6 | accept_eula: "Y" 7 | mssql_pid: "Express" 8 | -------------------------------------------------------------------------------- /Container/KubernetesApplication/sql-secret.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Secret 3 | metadata: 4 | name: sql-secret 5 | type: Opaque 6 | data: 7 | sql-username: U0E= 8 | sql-password: MUhhcHB5UEBzc3dvcmQ= 9 | -------------------------------------------------------------------------------- /Container/KubernetesApplication/sql.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: apps/v1 2 | kind: Deployment 3 | metadata: 4 | name: sql-deployment 5 | labels: 6 | app: sql 7 | spec: 8 | replicas: 1 9 | selector: 10 | matchLabels: 11 | app: sql 12 | template: 13 | metadata: 14 | labels: 15 | app: sql 16 | spec: 17 | containers: 18 | - name: sql 19 | image: mcr.microsoft.com/mssql/server:2017-latest-ubuntu 20 | ports: 21 | - containerPort: 1433 22 | env: 23 | - name: ACCEPT_EULA 24 | valueFrom: 25 | configMapKeyRef: 26 | name: sql-configmap 27 | key: accept_eula 28 | - name: SA_PASSWORD 29 | valueFrom: 30 | secretKeyRef: 31 | name: sql-secret 32 | key: sql-password 33 | - name: MSSQL_PID 34 | valueFrom: 35 | configMapKeyRef: 36 | name: sql-configmap 37 | key: mssql_pid 38 | --- 39 | apiVersion: v1 40 | kind: Service 41 | metadata: 42 | name: sql-service 43 | spec: 44 | selector: 45 | app: sql 46 | ports: 47 | - protocol: TCP 48 | port: 1433 49 | targetPort: 1433 50 | 51 | -------------------------------------------------------------------------------- /Container/Kubernets/CreateK8sLocally.md: -------------------------------------------------------------------------------- 1 | # 创建一个本地kubernetes集群步骤 - Windows 2 | 3 | ## 1. 激活hyper-v 4 | https://docs.microsoft.com/zh-cn/virtualization/hyper-v-on-windows/quick-start/enable-hyper-v 5 | 6 | ## 2. 安装docker desktop 7 | https://docs.docker.com/desktop/windows/install/ 8 | 9 | ## 3. 选择一下三者其一的工具来创建kubernetes集群 10 | * docker desktop: https://docs.docker.com/desktop/kubernetes/ 11 | * minikube: https://minikube.sigs.k8s.io/docs/start/ 12 | * kind: https://kind.sigs.k8s.io/docs/user/quick-start/ 13 | 14 | ## 4. 安装kubectl工具 15 | * https://kubernetes.io/zh/docs/tasks/tools/ 16 | 17 | ## 5. 开始你的kubernetes集群操作把 18 | 常见指令: 19 | * kubectl get nodes 20 | * kubectl get pods -A -------------------------------------------------------------------------------- /Container/Kubernets/deployment.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: apps/v1 2 | kind: Deployment 3 | metadata: 4 | name: nginx-deployment 5 | labels: 6 | app: nginx 7 | spec: 8 | replicas: 3 9 | selector: 10 | matchLabels: 11 | app: nginx 12 | template: 13 | metadata: 14 | labels: 15 | app: nginx 16 | spec: 17 | containers: 18 | - name: nginx 19 | image: nginx:1.14.2 20 | ports: 21 | - containerPort: 80 22 | -------------------------------------------------------------------------------- /Document/RateLimiting.md: -------------------------------------------------------------------------------- 1 | # RateLimiting 2 | 大家好,我是jimmy,今天我来给大家讲解一下api的rate limiting。也就是API的限流。任何一个项目如果没有这一层的防御的话,它就会像纸糊的系统,可以被人轻松的攻击,网站奔溃。今天我就讲解一下实际项目中如果有效对这类攻击进行防御。如果觉的我的频道有帮助到你的话,请先加个关注。 3 | 4 | # why 5 | 首先为什么我们看下为什么所有系统都需要rate limiting。任何的网络应用服务都是由后端一系列服务的提供支持的。既然由服务器支持,那么服务器一定是有资源限制的。其中包括了,CPU,memeory,和数据库等等限制。就算我们后端一般不止一台服务器,有负载均衡来平衡各个服务器之间的请求数量,但服务的资源肯定是有上限的。我们希望这些资源能够运行正常,并且最大化的服务我们的正常用户。 6 | 7 | 但这个世界上,最不缺少的就是有一些充满破环好奇心的小朋友,想考研一下你的网站。比如你开发了一个类似微博,或者论坛类的网站,有人写了个脚本,开始疯狂随机发一些微博和留言,比如一分钟内,发了10w的帖子之类的。那么你这个网站肯定是轻松挂掉了。这种时候,我们的系统需要对每个用户在一定时间内能够发出的请求做出限制防止这种破坏,比如我们微博的网站上,就明确的记载了的请求的限制。再比如就是有人注册了一堆账号,又开始跑一个脚本,在多个用户名下,开始攻击,破掉了你加的用户请求数的限制。这个系统就又崩掉了。这个时候,系统意识到需要对用户ip也进行防御。最后,有人非常不怀好意,开始在全球的范围的地点进行攻击,那么这就是一个传说中DDoS攻击。很多大网站每天也经常被这种攻击高挂。很多时候我们需要在使用第三放专业的DDos的工具进行防御。 8 | 9 | # Rate limit的种类 10 | 一般需要在三中rate limiter的种类。一种是在客户的rate limiter,一个中是全局的rate limiter,一种单个机器的limtier。全方位的rate limiter才能保证我们的系统安全,程序员的头发健在。一般客户端的rate limiter的实现相对简单,我就不做讲解。全局的limiter实现相对复杂,本期视频后面会做一个讲解,server端的limiter一般有很多类包我们可以直接拿来使用。本期视频后面也会讲解一个asp.net中好用的类包。 11 | 12 | # Rate limit的算法 13 | * Token bucket 14 | 这种算法就是在每一个时间的区间内,记录请求的数量,但数量超过上线时,则对器进行拦截返回错误。这种方法的好处是相对来说,易于实现。但有点小问题就是,如果有人在区间的边沿进行攻击,我们的服务可能会收到两倍的攻击量。这个两倍的估计量则有可能破坏我的系统。 15 | 16 | * Sliding window 17 | 这种算法是对前面算法的一种优化。与token bucket的不同的时,sliding windows,不仅记录一个请求数量,它还记录了所有请求的时间戳。当当前请求到达我们的rate limiter的时候,我们会先移除最近一个时间窗口之外的旧的请求。然后再判断当前窗口中的请求数量。这样,我们就可以避免了token bucket的算法问题。 18 | 19 | # 实现 20 | 21 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # JimmyCodingExamples -------------------------------------------------------------------------------- /RateLimiter/BasicWeatherCacheApp/.vs/BasicWeatherCacheApp/v17/.suo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JimmyCoding92/JimmyCodingExamples/d7c916647aaec086f8ed0fa3d4b84c062255210a/RateLimiter/BasicWeatherCacheApp/.vs/BasicWeatherCacheApp/v17/.suo -------------------------------------------------------------------------------- /RateLimiter/BasicWeatherCacheApp/BasicWeatherCacheApp.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | net6.0 5 | enable 6 | enable 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /RateLimiter/BasicWeatherCacheApp/BasicWeatherCacheApp.csproj.user: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | MvcControllerEmptyScaffolder 5 | root/Common/MVC/Controller 6 | 7 | -------------------------------------------------------------------------------- /RateLimiter/BasicWeatherCacheApp/Controllers/RateLimitedController.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.AspNetCore.Mvc; 2 | 3 | namespace BasicWeatherCacheApp.Controllers 4 | { 5 | [ApiController] 6 | [Route("api/[controller]")] 7 | public class RateLimitedController : ControllerBase 8 | { 9 | [HttpGet] 10 | [HttpPost] 11 | [Route("limited")] 12 | public async Task Limited() 13 | { 14 | return new JsonResult(new { Limited = false }); 15 | } 16 | 17 | [HttpGet] 18 | [HttpPost] 19 | [Route("indirectly-limited")] 20 | public async Task IndirectlyLimited() 21 | { 22 | return new JsonResult(new { NeverLimited = true }); 23 | } 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /RateLimiter/BasicWeatherCacheApp/ForecastResult.cs: -------------------------------------------------------------------------------- 1 | namespace BasicWeatherCacheApp 2 | { 3 | public class ForecastResult 4 | { 5 | public long ElapsedTime { get; } 6 | public IEnumerable Forecasts { get; } 7 | 8 | public ForecastResult(IEnumerable forecasts, long elapsedTime) 9 | { 10 | Forecasts = forecasts; 11 | ElapsedTime = elapsedTime; 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /RateLimiter/BasicWeatherCacheApp/Program.cs: -------------------------------------------------------------------------------- 1 | using BasicWeatherCacheApp; 2 | using Microsoft.Net.Http.Headers; 3 | using StackExchange.Redis; 4 | 5 | var builder = WebApplication.CreateBuilder(args); 6 | 7 | // Add services to the container. 8 | 9 | builder.Services.AddControllers(); 10 | // Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle 11 | builder.Services.AddEndpointsApiExplorer(); 12 | builder.Services.AddSwaggerGen(); 13 | 14 | builder.Services.AddSingleton(ConnectionMultiplexer.Connect("localhost")); 15 | builder.Services.AddHttpClient("weatherclient", client => 16 | { 17 | client.DefaultRequestHeaders.Add(HeaderNames.UserAgent, "Mozilla/5.0"); 18 | }); 19 | 20 | builder.Services.AddSingleton(ConnectionMultiplexer.Connect("localhost")); 21 | 22 | var app = builder.Build(); 23 | 24 | // Configure the HTTP request pipeline. 25 | if (app.Environment.IsDevelopment()) 26 | { 27 | app.UseSwagger(); 28 | app.UseSwaggerUI(); 29 | } 30 | 31 | app.UseHttpsRedirection(); 32 | 33 | //app.UseAuthorization(); 34 | 35 | app.UseSlidingWindowRateLimiter(); 36 | 37 | app.MapControllers(); 38 | 39 | app.Run(); 40 | -------------------------------------------------------------------------------- /RateLimiter/BasicWeatherCacheApp/Properties/launchSettings.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://json.schemastore.org/launchsettings.json", 3 | "iisSettings": { 4 | "windowsAuthentication": false, 5 | "anonymousAuthentication": false, 6 | "iisExpress": { 7 | "applicationUrl": "http://localhost:18796", 8 | "sslPort": 44365 9 | } 10 | }, 11 | "profiles": { 12 | "BasicWeatherCacheApp": { 13 | "commandName": "Project", 14 | "dotnetRunMessages": true, 15 | "launchBrowser": true, 16 | "launchUrl": "swagger", 17 | "applicationUrl": "https://localhost:7202;http://localhost:5230", 18 | "environmentVariables": { 19 | "ASPNETCORE_ENVIRONMENT": "Development" 20 | } 21 | }, 22 | "IIS Express": { 23 | "commandName": "IISExpress", 24 | "launchBrowser": true, 25 | "launchUrl": "swagger", 26 | "environmentVariables": { 27 | "ASPNETCORE_ENVIRONMENT": "Development" 28 | } 29 | } 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /RateLimiter/BasicWeatherCacheApp/SlidingWindowRateLimiterExtensions.cs: -------------------------------------------------------------------------------- 1 | namespace BasicWeatherCacheApp 2 | { 3 | public static class SlidingWindowRateLimiterExtensions 4 | { 5 | public static void UseSlidingWindowRateLimiter(this IApplicationBuilder builder) 6 | { 7 | builder.UseMiddleware(); 8 | } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /RateLimiter/BasicWeatherCacheApp/WeatherForecast.cs: -------------------------------------------------------------------------------- 1 | using System.Text.Json.Serialization; 2 | 3 | namespace BasicWeatherCacheApp; 4 | 5 | public class WeatherForecast 6 | { 7 | [JsonPropertyName("number")] 8 | public int Number { get; set; } 9 | 10 | [JsonPropertyName("name")] 11 | public string Name { get; set; } 12 | 13 | [JsonPropertyName("startTime")] 14 | public DateTime StartTime { get; set; } 15 | 16 | [JsonPropertyName("endTime")] 17 | public DateTime EndTime { get; set; } 18 | 19 | [JsonPropertyName("isDayTime")] 20 | public bool IsDayTime { get; set; } 21 | 22 | [JsonPropertyName("temperature")] 23 | public int Temperature { get; set; } 24 | 25 | [JsonPropertyName("temperatureUnit")] 26 | public string? TemperatureUnit { get; set; } 27 | 28 | [JsonPropertyName("temperatureTrend")] 29 | public string? TemperatureTrend { get; set; } 30 | 31 | [JsonPropertyName("windSpeed")] 32 | public string? WindSpeed { get; set; } 33 | 34 | [JsonPropertyName("windDirection")] 35 | public string? WindDirection { get; set; } 36 | 37 | [JsonPropertyName("shortForecast")] 38 | public string? ShortForecast { get; set; } 39 | 40 | [JsonPropertyName("detailedForecast")] 41 | public string? DetailedForecast { get; set; } 42 | } 43 | -------------------------------------------------------------------------------- /RateLimiter/BasicWeatherCacheApp/appsettings.Development.json: -------------------------------------------------------------------------------- 1 | { 2 | "Logging": { 3 | "LogLevel": { 4 | "Default": "Information", 5 | "Microsoft.AspNetCore": "Warning" 6 | } 7 | }, 8 | "RedisRateLimits": [ 9 | { 10 | "Path": "/api/RateLimited/limited", 11 | "Window": "30s", 12 | "MaxRequests": 5 13 | }, 14 | { 15 | "PathRegex": "^/api/*", 16 | "Window": "1h", 17 | "MaxRequests": 50 18 | } 19 | ] 20 | } 21 | -------------------------------------------------------------------------------- /RateLimiter/BasicWeatherCacheApp/appsettings.json: -------------------------------------------------------------------------------- 1 | { 2 | "Logging": { 3 | "LogLevel": { 4 | "Default": "Information", 5 | "Microsoft.AspNetCore": "Warning" 6 | } 7 | }, 8 | "AllowedHosts": "*" 9 | } 10 | -------------------------------------------------------------------------------- /RateLimiter/BasicWeatherCacheApp/bin/Debug/net6.0/AspNetCoreRateLimit.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JimmyCoding92/JimmyCodingExamples/d7c916647aaec086f8ed0fa3d4b84c062255210a/RateLimiter/BasicWeatherCacheApp/bin/Debug/net6.0/AspNetCoreRateLimit.dll -------------------------------------------------------------------------------- /RateLimiter/BasicWeatherCacheApp/bin/Debug/net6.0/BasicWeatherCacheApp.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JimmyCoding92/JimmyCodingExamples/d7c916647aaec086f8ed0fa3d4b84c062255210a/RateLimiter/BasicWeatherCacheApp/bin/Debug/net6.0/BasicWeatherCacheApp.dll -------------------------------------------------------------------------------- /RateLimiter/BasicWeatherCacheApp/bin/Debug/net6.0/BasicWeatherCacheApp.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JimmyCoding92/JimmyCodingExamples/d7c916647aaec086f8ed0fa3d4b84c062255210a/RateLimiter/BasicWeatherCacheApp/bin/Debug/net6.0/BasicWeatherCacheApp.exe -------------------------------------------------------------------------------- /RateLimiter/BasicWeatherCacheApp/bin/Debug/net6.0/BasicWeatherCacheApp.pdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JimmyCoding92/JimmyCodingExamples/d7c916647aaec086f8ed0fa3d4b84c062255210a/RateLimiter/BasicWeatherCacheApp/bin/Debug/net6.0/BasicWeatherCacheApp.pdb -------------------------------------------------------------------------------- /RateLimiter/BasicWeatherCacheApp/bin/Debug/net6.0/BasicWeatherCacheApp.runtimeconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "runtimeOptions": { 3 | "tfm": "net6.0", 4 | "frameworks": [ 5 | { 6 | "name": "Microsoft.NETCore.App", 7 | "version": "6.0.0" 8 | }, 9 | { 10 | "name": "Microsoft.AspNetCore.App", 11 | "version": "6.0.0" 12 | } 13 | ], 14 | "configProperties": { 15 | "System.GC.Server": true, 16 | "System.Runtime.Serialization.EnableUnsafeBinaryFormatterSerialization": false 17 | } 18 | } 19 | } -------------------------------------------------------------------------------- /RateLimiter/BasicWeatherCacheApp/bin/Debug/net6.0/Microsoft.OpenApi.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JimmyCoding92/JimmyCodingExamples/d7c916647aaec086f8ed0fa3d4b84c062255210a/RateLimiter/BasicWeatherCacheApp/bin/Debug/net6.0/Microsoft.OpenApi.dll -------------------------------------------------------------------------------- /RateLimiter/BasicWeatherCacheApp/bin/Debug/net6.0/Microsoft.Win32.SystemEvents.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JimmyCoding92/JimmyCodingExamples/d7c916647aaec086f8ed0fa3d4b84c062255210a/RateLimiter/BasicWeatherCacheApp/bin/Debug/net6.0/Microsoft.Win32.SystemEvents.dll -------------------------------------------------------------------------------- /RateLimiter/BasicWeatherCacheApp/bin/Debug/net6.0/Newtonsoft.Json.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JimmyCoding92/JimmyCodingExamples/d7c916647aaec086f8ed0fa3d4b84c062255210a/RateLimiter/BasicWeatherCacheApp/bin/Debug/net6.0/Newtonsoft.Json.dll -------------------------------------------------------------------------------- /RateLimiter/BasicWeatherCacheApp/bin/Debug/net6.0/Pipelines.Sockets.Unofficial.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JimmyCoding92/JimmyCodingExamples/d7c916647aaec086f8ed0fa3d4b84c062255210a/RateLimiter/BasicWeatherCacheApp/bin/Debug/net6.0/Pipelines.Sockets.Unofficial.dll -------------------------------------------------------------------------------- /RateLimiter/BasicWeatherCacheApp/bin/Debug/net6.0/StackExchange.Redis.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JimmyCoding92/JimmyCodingExamples/d7c916647aaec086f8ed0fa3d4b84c062255210a/RateLimiter/BasicWeatherCacheApp/bin/Debug/net6.0/StackExchange.Redis.dll -------------------------------------------------------------------------------- /RateLimiter/BasicWeatherCacheApp/bin/Debug/net6.0/Swashbuckle.AspNetCore.Swagger.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JimmyCoding92/JimmyCodingExamples/d7c916647aaec086f8ed0fa3d4b84c062255210a/RateLimiter/BasicWeatherCacheApp/bin/Debug/net6.0/Swashbuckle.AspNetCore.Swagger.dll -------------------------------------------------------------------------------- /RateLimiter/BasicWeatherCacheApp/bin/Debug/net6.0/Swashbuckle.AspNetCore.SwaggerGen.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JimmyCoding92/JimmyCodingExamples/d7c916647aaec086f8ed0fa3d4b84c062255210a/RateLimiter/BasicWeatherCacheApp/bin/Debug/net6.0/Swashbuckle.AspNetCore.SwaggerGen.dll -------------------------------------------------------------------------------- /RateLimiter/BasicWeatherCacheApp/bin/Debug/net6.0/Swashbuckle.AspNetCore.SwaggerUI.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JimmyCoding92/JimmyCodingExamples/d7c916647aaec086f8ed0fa3d4b84c062255210a/RateLimiter/BasicWeatherCacheApp/bin/Debug/net6.0/Swashbuckle.AspNetCore.SwaggerUI.dll -------------------------------------------------------------------------------- /RateLimiter/BasicWeatherCacheApp/bin/Debug/net6.0/System.Configuration.ConfigurationManager.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JimmyCoding92/JimmyCodingExamples/d7c916647aaec086f8ed0fa3d4b84c062255210a/RateLimiter/BasicWeatherCacheApp/bin/Debug/net6.0/System.Configuration.ConfigurationManager.dll -------------------------------------------------------------------------------- /RateLimiter/BasicWeatherCacheApp/bin/Debug/net6.0/System.Diagnostics.PerformanceCounter.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JimmyCoding92/JimmyCodingExamples/d7c916647aaec086f8ed0fa3d4b84c062255210a/RateLimiter/BasicWeatherCacheApp/bin/Debug/net6.0/System.Diagnostics.PerformanceCounter.dll -------------------------------------------------------------------------------- /RateLimiter/BasicWeatherCacheApp/bin/Debug/net6.0/System.Drawing.Common.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JimmyCoding92/JimmyCodingExamples/d7c916647aaec086f8ed0fa3d4b84c062255210a/RateLimiter/BasicWeatherCacheApp/bin/Debug/net6.0/System.Drawing.Common.dll -------------------------------------------------------------------------------- /RateLimiter/BasicWeatherCacheApp/bin/Debug/net6.0/System.Security.Cryptography.ProtectedData.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JimmyCoding92/JimmyCodingExamples/d7c916647aaec086f8ed0fa3d4b84c062255210a/RateLimiter/BasicWeatherCacheApp/bin/Debug/net6.0/System.Security.Cryptography.ProtectedData.dll -------------------------------------------------------------------------------- /RateLimiter/BasicWeatherCacheApp/bin/Debug/net6.0/System.Security.Permissions.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JimmyCoding92/JimmyCodingExamples/d7c916647aaec086f8ed0fa3d4b84c062255210a/RateLimiter/BasicWeatherCacheApp/bin/Debug/net6.0/System.Security.Permissions.dll -------------------------------------------------------------------------------- /RateLimiter/BasicWeatherCacheApp/bin/Debug/net6.0/System.Windows.Extensions.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JimmyCoding92/JimmyCodingExamples/d7c916647aaec086f8ed0fa3d4b84c062255210a/RateLimiter/BasicWeatherCacheApp/bin/Debug/net6.0/System.Windows.Extensions.dll -------------------------------------------------------------------------------- /RateLimiter/BasicWeatherCacheApp/bin/Debug/net6.0/appsettings.Development.json: -------------------------------------------------------------------------------- 1 | { 2 | "Logging": { 3 | "LogLevel": { 4 | "Default": "Information", 5 | "Microsoft.AspNetCore": "Warning" 6 | } 7 | }, 8 | "RedisRateLimits": [ 9 | { 10 | "Path": "/api/RateLimited/limited", 11 | "Window": "30s", 12 | "MaxRequests": 5 13 | }, 14 | { 15 | "PathRegex": "^/api/*", 16 | "Window": "1h", 17 | "MaxRequests": 50 18 | } 19 | ] 20 | } 21 | -------------------------------------------------------------------------------- /RateLimiter/BasicWeatherCacheApp/bin/Debug/net6.0/appsettings.json: -------------------------------------------------------------------------------- 1 | { 2 | "Logging": { 3 | "LogLevel": { 4 | "Default": "Information", 5 | "Microsoft.AspNetCore": "Warning" 6 | } 7 | }, 8 | "AllowedHosts": "*" 9 | } 10 | -------------------------------------------------------------------------------- /RateLimiter/BasicWeatherCacheApp/bin/Debug/net6.0/ref/BasicWeatherCacheApp.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JimmyCoding92/JimmyCodingExamples/d7c916647aaec086f8ed0fa3d4b84c062255210a/RateLimiter/BasicWeatherCacheApp/bin/Debug/net6.0/ref/BasicWeatherCacheApp.dll -------------------------------------------------------------------------------- /RateLimiter/BasicWeatherCacheApp/bin/Debug/net6.0/runtimes/unix/lib/netcoreapp3.0/System.Drawing.Common.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JimmyCoding92/JimmyCodingExamples/d7c916647aaec086f8ed0fa3d4b84c062255210a/RateLimiter/BasicWeatherCacheApp/bin/Debug/net6.0/runtimes/unix/lib/netcoreapp3.0/System.Drawing.Common.dll -------------------------------------------------------------------------------- /RateLimiter/BasicWeatherCacheApp/bin/Debug/net6.0/runtimes/win/lib/netcoreapp2.0/System.Diagnostics.PerformanceCounter.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JimmyCoding92/JimmyCodingExamples/d7c916647aaec086f8ed0fa3d4b84c062255210a/RateLimiter/BasicWeatherCacheApp/bin/Debug/net6.0/runtimes/win/lib/netcoreapp2.0/System.Diagnostics.PerformanceCounter.dll -------------------------------------------------------------------------------- /RateLimiter/BasicWeatherCacheApp/bin/Debug/net6.0/runtimes/win/lib/netcoreapp3.0/Microsoft.Win32.SystemEvents.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JimmyCoding92/JimmyCodingExamples/d7c916647aaec086f8ed0fa3d4b84c062255210a/RateLimiter/BasicWeatherCacheApp/bin/Debug/net6.0/runtimes/win/lib/netcoreapp3.0/Microsoft.Win32.SystemEvents.dll -------------------------------------------------------------------------------- /RateLimiter/BasicWeatherCacheApp/bin/Debug/net6.0/runtimes/win/lib/netcoreapp3.0/System.Drawing.Common.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JimmyCoding92/JimmyCodingExamples/d7c916647aaec086f8ed0fa3d4b84c062255210a/RateLimiter/BasicWeatherCacheApp/bin/Debug/net6.0/runtimes/win/lib/netcoreapp3.0/System.Drawing.Common.dll -------------------------------------------------------------------------------- /RateLimiter/BasicWeatherCacheApp/bin/Debug/net6.0/runtimes/win/lib/netcoreapp3.0/System.Windows.Extensions.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JimmyCoding92/JimmyCodingExamples/d7c916647aaec086f8ed0fa3d4b84c062255210a/RateLimiter/BasicWeatherCacheApp/bin/Debug/net6.0/runtimes/win/lib/netcoreapp3.0/System.Windows.Extensions.dll -------------------------------------------------------------------------------- /RateLimiter/BasicWeatherCacheApp/bin/Debug/net6.0/runtimes/win/lib/netstandard2.0/System.Security.Cryptography.ProtectedData.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JimmyCoding92/JimmyCodingExamples/d7c916647aaec086f8ed0fa3d4b84c062255210a/RateLimiter/BasicWeatherCacheApp/bin/Debug/net6.0/runtimes/win/lib/netstandard2.0/System.Security.Cryptography.ProtectedData.dll -------------------------------------------------------------------------------- /RateLimiter/BasicWeatherCacheApp/obj/BasicWeatherCacheApp.csproj.nuget.g.targets: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /RateLimiter/BasicWeatherCacheApp/obj/Debug/net6.0/.NETCoreApp,Version=v6.0.AssemblyAttributes.cs: -------------------------------------------------------------------------------- 1 | // 2 | using System; 3 | using System.Reflection; 4 | [assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETCoreApp,Version=v6.0", FrameworkDisplayName = "")] 5 | -------------------------------------------------------------------------------- /RateLimiter/BasicWeatherCacheApp/obj/Debug/net6.0/BasicWeatherCacheApp.AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // 3 | // This code was generated by a tool. 4 | // Runtime Version:4.0.30319.42000 5 | // 6 | // Changes to this file may cause incorrect behavior and will be lost if 7 | // the code is regenerated. 8 | // 9 | //------------------------------------------------------------------------------ 10 | 11 | using System; 12 | using System.Reflection; 13 | 14 | [assembly: System.Reflection.AssemblyCompanyAttribute("BasicWeatherCacheApp")] 15 | [assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")] 16 | [assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] 17 | [assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0")] 18 | [assembly: System.Reflection.AssemblyProductAttribute("BasicWeatherCacheApp")] 19 | [assembly: System.Reflection.AssemblyTitleAttribute("BasicWeatherCacheApp")] 20 | [assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] 21 | 22 | // Generated by the MSBuild WriteCodeFragment class. 23 | 24 | -------------------------------------------------------------------------------- /RateLimiter/BasicWeatherCacheApp/obj/Debug/net6.0/BasicWeatherCacheApp.AssemblyInfoInputs.cache: -------------------------------------------------------------------------------- 1 | 57d5c9c9377255b301746403cfeabea7f82901d2 2 | -------------------------------------------------------------------------------- /RateLimiter/BasicWeatherCacheApp/obj/Debug/net6.0/BasicWeatherCacheApp.GeneratedMSBuildEditorConfig.editorconfig: -------------------------------------------------------------------------------- 1 | is_global = true 2 | build_property.TargetFramework = net6.0 3 | build_property.TargetPlatformMinVersion = 4 | build_property.UsingMicrosoftNETSdkWeb = true 5 | build_property.ProjectTypeGuids = 6 | build_property.InvariantGlobalization = 7 | build_property.PlatformNeutralAssembly = 8 | build_property._SupportedPlatformList = Linux,macOS,Windows 9 | build_property.RootNamespace = BasicWeatherCacheApp 10 | build_property.RootNamespace = BasicWeatherCacheApp 11 | build_property.ProjectDir = F:\project\JimmyCodingExamples\RateLimiter\BasicWeatherCacheApp\ 12 | build_property.RazorLangVersion = 6.0 13 | build_property.SupportLocalizedComponentNames = 14 | build_property.GenerateRazorMetadataSourceChecksumAttributes = 15 | build_property.MSBuildProjectDirectory = F:\project\JimmyCodingExamples\RateLimiter\BasicWeatherCacheApp 16 | build_property._RazorSourceGeneratorDebug = 17 | -------------------------------------------------------------------------------- /RateLimiter/BasicWeatherCacheApp/obj/Debug/net6.0/BasicWeatherCacheApp.GlobalUsings.g.cs: -------------------------------------------------------------------------------- 1 | // 2 | global using global::Microsoft.AspNetCore.Builder; 3 | global using global::Microsoft.AspNetCore.Hosting; 4 | global using global::Microsoft.AspNetCore.Http; 5 | global using global::Microsoft.AspNetCore.Routing; 6 | global using global::Microsoft.Extensions.Configuration; 7 | global using global::Microsoft.Extensions.DependencyInjection; 8 | global using global::Microsoft.Extensions.Hosting; 9 | global using global::Microsoft.Extensions.Logging; 10 | global using global::System; 11 | global using global::System.Collections.Generic; 12 | global using global::System.IO; 13 | global using global::System.Linq; 14 | global using global::System.Net.Http; 15 | global using global::System.Net.Http.Json; 16 | global using global::System.Threading; 17 | global using global::System.Threading.Tasks; 18 | -------------------------------------------------------------------------------- /RateLimiter/BasicWeatherCacheApp/obj/Debug/net6.0/BasicWeatherCacheApp.MvcApplicationPartsAssemblyInfo.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JimmyCoding92/JimmyCodingExamples/d7c916647aaec086f8ed0fa3d4b84c062255210a/RateLimiter/BasicWeatherCacheApp/obj/Debug/net6.0/BasicWeatherCacheApp.MvcApplicationPartsAssemblyInfo.cache -------------------------------------------------------------------------------- /RateLimiter/BasicWeatherCacheApp/obj/Debug/net6.0/BasicWeatherCacheApp.MvcApplicationPartsAssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // 3 | // This code was generated by a tool. 4 | // Runtime Version:4.0.30319.42000 5 | // 6 | // Changes to this file may cause incorrect behavior and will be lost if 7 | // the code is regenerated. 8 | // 9 | //------------------------------------------------------------------------------ 10 | 11 | using System; 12 | using System.Reflection; 13 | 14 | [assembly: Microsoft.AspNetCore.Mvc.ApplicationParts.ApplicationPartAttribute("Swashbuckle.AspNetCore.SwaggerGen")] 15 | 16 | // Generated by the MSBuild WriteCodeFragment class. 17 | 18 | -------------------------------------------------------------------------------- /RateLimiter/BasicWeatherCacheApp/obj/Debug/net6.0/BasicWeatherCacheApp.assets.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JimmyCoding92/JimmyCodingExamples/d7c916647aaec086f8ed0fa3d4b84c062255210a/RateLimiter/BasicWeatherCacheApp/obj/Debug/net6.0/BasicWeatherCacheApp.assets.cache -------------------------------------------------------------------------------- /RateLimiter/BasicWeatherCacheApp/obj/Debug/net6.0/BasicWeatherCacheApp.csproj.AssemblyReference.cache: -------------------------------------------------------------------------------- 1 |  -------------------------------------------------------------------------------- /RateLimiter/BasicWeatherCacheApp/obj/Debug/net6.0/BasicWeatherCacheApp.csproj.CopyComplete: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JimmyCoding92/JimmyCodingExamples/d7c916647aaec086f8ed0fa3d4b84c062255210a/RateLimiter/BasicWeatherCacheApp/obj/Debug/net6.0/BasicWeatherCacheApp.csproj.CopyComplete -------------------------------------------------------------------------------- /RateLimiter/BasicWeatherCacheApp/obj/Debug/net6.0/BasicWeatherCacheApp.csproj.CoreCompileInputs.cache: -------------------------------------------------------------------------------- 1 | e77464db29b0296e0860693d9e0ea8bb9a2818bd 2 | -------------------------------------------------------------------------------- /RateLimiter/BasicWeatherCacheApp/obj/Debug/net6.0/BasicWeatherCacheApp.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JimmyCoding92/JimmyCodingExamples/d7c916647aaec086f8ed0fa3d4b84c062255210a/RateLimiter/BasicWeatherCacheApp/obj/Debug/net6.0/BasicWeatherCacheApp.dll -------------------------------------------------------------------------------- /RateLimiter/BasicWeatherCacheApp/obj/Debug/net6.0/BasicWeatherCacheApp.genruntimeconfig.cache: -------------------------------------------------------------------------------- 1 | 2608560afaf578e5bf63c88a029b98c72ecf0895 2 | -------------------------------------------------------------------------------- /RateLimiter/BasicWeatherCacheApp/obj/Debug/net6.0/BasicWeatherCacheApp.pdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JimmyCoding92/JimmyCodingExamples/d7c916647aaec086f8ed0fa3d4b84c062255210a/RateLimiter/BasicWeatherCacheApp/obj/Debug/net6.0/BasicWeatherCacheApp.pdb -------------------------------------------------------------------------------- /RateLimiter/BasicWeatherCacheApp/obj/Debug/net6.0/apphost.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JimmyCoding92/JimmyCodingExamples/d7c916647aaec086f8ed0fa3d4b84c062255210a/RateLimiter/BasicWeatherCacheApp/obj/Debug/net6.0/apphost.exe -------------------------------------------------------------------------------- /RateLimiter/BasicWeatherCacheApp/obj/Debug/net6.0/ref/BasicWeatherCacheApp.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JimmyCoding92/JimmyCodingExamples/d7c916647aaec086f8ed0fa3d4b84c062255210a/RateLimiter/BasicWeatherCacheApp/obj/Debug/net6.0/ref/BasicWeatherCacheApp.dll -------------------------------------------------------------------------------- /RateLimiter/BasicWeatherCacheApp/obj/Debug/net6.0/staticwebassets.build.json: -------------------------------------------------------------------------------- 1 | { 2 | "Version": 1, 3 | "Hash": "Gl0OxHbxgN/bznAxBs3HiyIyjKhQZ8n2WJ0aRBvLWBc=", 4 | "Source": "BasicWeatherCacheApp", 5 | "BasePath": "_content/BasicWeatherCacheApp", 6 | "Mode": "Default", 7 | "ManifestType": "Build", 8 | "ReferencedProjectsConfiguration": [], 9 | "DiscoveryPatterns": [], 10 | "Assets": [] 11 | } -------------------------------------------------------------------------------- /RateLimiter/BasicWeatherCacheApp/obj/staticwebassets.pack.sentinel: -------------------------------------------------------------------------------- 1 | 2.0 2 | 2.0 3 | 2.0 4 | 2.0 5 | 2.0 6 | 2.0 7 | 2.0 8 | 2.0 9 | 2.0 10 | -------------------------------------------------------------------------------- /RateLimiter/readme.md: -------------------------------------------------------------------------------- 1 | # Rate Limiter项目使用说明 2 | 3 | ## Redis针对rate limit的官方文档 4 | https://developer.redis.com/develop/dotnet/aspnetcore/rate-limiting/sliding-window/ 5 | 6 | ## AspNetCoreRateLimit git 链接 7 | https://github.com/stefanprodan/AspNetCoreRateLimit -------------------------------------------------------------------------------- /SQL/CommonSQL.md: -------------------------------------------------------------------------------- 1 | CREATE DATABASE JimmyCoding; 2 | DROP DATABASE JimmyCoding; 3 | 4 | Use JimmyCodingDataBase 5 | create table FirstTable ( 6 | id uniqueidentifier not null PRIMARY KEY, 7 | charColumn char(10), 8 | varCharColumn varchar(10), 9 | ncharColumn nchar(10), 10 | nvarcharColumn nvarchar(10), 11 | bitColumn bit, 12 | intColumn int, 13 | bigintColumn bigint, 14 | decimalColumn decimal, 15 | floatColumn float, 16 | moneyColumn money, 17 | datetimeColumn datetime, 18 | binaryColumn binary, 19 | imageColumn image, 20 | xmlColumn xml, 21 | rowVersionColumn rowversion, 22 | geoColumn geography 23 | ); 24 | 25 | create table SecondTable ( 26 | id uniqueidentifier not null PRIMARY KEY, 27 | firstTableIdReference uniqueidentifier FOREIGN KEY REFERENCES FirstTable(id) 28 | ); 29 | 30 | drop table FirstTable 31 | drop table SecondTable 32 | 33 | Use WideWorldImporters 34 | select CityName from Application.Cities 35 | 36 | select * from Application.Cities 37 | 38 | select distinct CityName from Application.Cities order by CityName asc 39 | 40 | select CityName, Count(CityName) as cityCount from Application.Cities group by CityName having COUNT(CityName) > 1 41 | 42 | select SupplierId, TransactionAmount, (select AVG(TransactionAmount) from Purchasing.SupplierTransactions) as TransactionAmount 43 | from Purchasing.SupplierTransactions 44 | 45 | select SupplierID, SUM(nums_order) FROM 46 | (select SupplierID, TransactionDate, COUNT(*) as nums_order 47 | from Purchasing.SupplierTransactions 48 | GROUP by SupplierID, TransactionDate) sub 49 | group by SupplierID 50 | 51 | select * 52 | from Purchasing.SupplierTransactions 53 | where SupplierID IN (select PersonId from Application.People where IsEmployee = 1) 54 | -------------------------------------------------------------------------------- /SQL/SetupSQLDocker.md: -------------------------------------------------------------------------------- 1 | # 配置SQL本地环境 2 | 3 | ## 微软官方文档 4 | https://docs.microsoft.com/en-us/sql/linux/tutorial-restore-backup-in-sql-server-container?view=sql-server-ver15 5 | 6 | ## 1. 配置sql sever docker image 7 | docker run -e "ACCEPT_EULA=Y" -e "SA_PASSWORD=yourStrong(!)Password" -p 1433:1433 -d mcr.microsoft.com/mssql/server:2019-latest 8 | 9 | ## 2. 下载数据集 10 | powershell命令: curl -OutFile "wwi.bak" "https://github.com/Microsoft/sql-server-samples/releases/download/wide-world-importers-v1.0/WideWorldImporters-Full.bak" 11 | 12 | ## 3. 将数据集拷入docker中 13 | docker cp wwi.bak sql1:/var/opt/mssql/backup 14 | 15 | ## 4. 将数据集载入到sql server中 16 | docker exec -it sql1 /opt/mssql-tools/bin/sqlcmd ` 17 | -S localhost -U SA -P "" ` 18 | -Q "RESTORE DATABASE WideWorldImporters FROM DISK = '/var/opt/mssql/backup/wwi.bak' WITH MOVE 'WWI_Primary' TO '/var/opt/mssql/data/WideWorldImporters.mdf', MOVE 'WWI_UserData' TO '/var/opt/mssql/data/WideWorldImporters_userdata.ndf', MOVE 'WWI_Log' TO '/var/opt/mssql/data/WideWorldImporters.ldf', MOVE 'WWI_InMemory_Data_1' TO '/var/opt/mssql/data/WideWorldImporters_InMemory_Data_1'" 19 | 20 | ## 5. 下载使用SSMS登录sql server 21 | https://docs.microsoft.com/en-us/sql/ssms/download-sql-server-management-studio-ssms?view=sql-server-ver15 --------------------------------------------------------------------------------