Angular 16 CRUD with .NET 7 Web API using Entity Framework Core - Full Course
📑 Contents:
00:00:00 Video Introduction
00:00:40 Angular and ASP.NET Core Udemy Course Demo
00:03:07 Prerequisites
00:03:37 Setting Up Development Environment
00:15:37 Create ASP.NET Core Web API
00:20:07 Understanding Files and Folder Structure
00:25:37 Understanding REST and HTTP Verbs
00:30:10 Create .NET 6 Web API
00:32:41 Our Project and Domain Models
00:41:16 Installing Nuget Packages For Entity Framework Core
00:43:06 DbContext
00:59:26 Running EF Core Migrations
01:03:26 Create Controllers and Actions
01:23:46 Repository Pattern
01:36:46 Create New Angular Application using Angular CLI
01:50:09 Angular Components
02:13:29 CRUD in Angular and ASP.NET Core Web APIs
02:17:21 Angular Forms
02:26:59 Angular Services
02:38:09 CORS
02:42:09 Unsubscribing
C#.NET for non-engineers.
The first course of "A Sr. Developer Course" courses. which contains:
1- C# Fundamentals for non-engineers.
2- DataBase for non-engineers.
3- Asp.NET WebForm for Non-engineers.
4- Application Architecture for no-engineers.
5- ASP.NET MVC for non-engineers.
6- Angular for non-engineers.
This is a course for who knows noting about C# and development if you know nothing about Array, variable, loop, and conditions you are in the right place.
at the end of this course, we will create one small university registration console application together.
You will learn in this course:
C#.NET
.NET Framework
Methods
Recursive methods
C# Primitive Types/Complex Types
conditions
switch case
Arrays
if statement
switch
loops
Creating a method
ref, out
enums
OOP/Object-oriented programing
Generics
Error handling
problem-solving
working with files
level: beginners to upper intermediate
- Fixed issue when using HotRestart to deploy iOS application.
- Fixed and issue where Xamarin.iOS fails to build with MessagingRemoteException.
- Fixed an issue which would place constant-initialized static local 'const' variables in 'inline' functions which were previously dynamically-initialized in the read-only data segment. This can cause compatibility issues when linking against OBJs compiled with older toolsets.
- Fixed a build error in Xamarin.Android projects that could be encountered when Android layout files contain certain characters.
- Fixed an issue with .resx localization at runtime for Xamarin.Android applications.
- C++ IntelliSense vcpkgsrv.exe frequently crashes with set_parent_scope_on_push.
- Fixed WMI Provider component installation failure.
- Fixed a crash in some cases when displaying the Quick Info tooltip for C++ code.
- Fixed a crash when closing Visual Studio.
- Adds Xcode 11.5 SDK support
- Removes abstract modifier to BGTask
پاسخ به برترین سوالات Python
Strong Name
C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.8 Tools\sn.exe
sn.exe -k MyProject.snk sn.exe -p MyProject.snk public.snk sn.exe -tp public.snk
<PropertyGroup> <SignAssembly>true</SignAssembly> <AssemblyOriginatorKeyFile>$(MSBuildThisFileDirectory)MyProject.snk</AssemblyOriginatorKeyFile> <PublicKey>0024000004800000940000000602 ...</PublicKey> </PropertyGroup>
sn.exe -vf MyProj.dll
- انتخاب محیط Build به صورت «Visual Studio 2019 preview»، از این جهت که نگارش preview به همراه آخرین SDK است.
- سپس قفل کردن شماره SDK در پروژهی خود، با افزودن فایل global.json
dotnet new globaljson --sdk-version 3.0.100-preview7-012821
$urlCurrent = "https://download.visualstudio.microsoft.com/download/pr/41e4c58f-3ac9-43f6-84b6-f57d2135331a/3691b61f15f1f5f844d687e542c4dc72/dotnet-sdk-3.0.100-preview7-012821-win-x64.zip" $env:DOTNET_INSTALL_DIR = "C:\Program Files\dotnet\sdk" mkdir $env:DOTNET_INSTALL_DIR -Force | Out-Null $tempFileCurrent = [System.IO.Path]::Combine([System.IO.Path]::GetTempPath(), [System.IO.Path]::GetRandomFileName()) (New-Object System.Net.WebClient).DownloadFile($urlCurrent, $tempFileCurrent) Add-Type -AssemblyName System.IO.Compression.FileSystem; [System.IO.Compression.ZipFile]::ExtractToDirectory($tempFileCurrent, $env:DOTNET_INSTALL_DIR) $env:Path = "$env:DOTNET_INSTALL_DIR;$env:Path"
اکنون اگر به قسمت current build مراجعه و یک build جدید را شروع کنید، ابتدا SDK جدید را دریافت و نصب میکند. سپس بر این اساس شروع به Build پروژه میکند.
فرض کنید برای آزمایش قسمت «از سرگیری مجدد» دریافت یک فایل حجیم مطلب جاری، یک چنین کدی را در یک برنامهی ASP.NET Core 2.0 تهیه کردهاید:
public class HomeController : Controller { public IActionResult GetFile() { return PhysicalFile(@"C:\path\file.pdf", "application/pdf"); }
اجرای این کد به همراه هدر مخصوص «Accept-Ranges: bytes » که در مطلب جاری در مورد آن بحث شد نیز هست:
یعنی دریافت فایلها در ASP.NET Core 2.0 به صورت توکار از ویژگی «از سرگیری مجدد» پشتیبانی میکند. قابلیتی که در نگارشهای پیشین ASP.NET (تمام نگارشهای آن)، به صورت پیشفرض و توکار وجود نداشت و برای پیاده سازی آن میبایستی مقدار زیادی کد نوشته میشد.
var result = new FileStreamResult(readStream, contentType) { LastModified = lastModified, EntityTag = entityTag, EnableRangeProcessing = true, }; return PhysicalFile(path, "text/plain", "downloadName.txt", lastModified, entityTag, true); return File(data, "text/plain", "downloadName.txt", lastModified: null, entityTag: entityTag, enableRangeProcessing: true);
چک لیست تهیه یک برنامه ASP.NET MVC
<ItemGroup> <Reference Include="EntityFramework, Version=4.4.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL"> <SpecificVersion>False</SpecificVersion> <HintPath>..\packages\EntityFramework.5.0.0\lib\net40\EntityFramework.dll</HintPath> </Reference> <Reference Include="System" /> <Reference Include="System.ComponentModel.DataAnnotations" /> <Reference Include="System.Core" /> <Reference Include="System.Web" /> <Reference Include="System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL"> <SpecificVersion>False</SpecificVersion> <HintPath>C:\Program Files\Microsoft ASP.NET\ASP.NET MVC 4\Assemblies\System.Web.Mvc.dll</HintPath> </Reference> <Reference Include="System.Xml.Linq" /> <Reference Include="System.Data.DataSetExtensions" /> <Reference Include="Microsoft.CSharp" /> <Reference Include="System.Data" /> <Reference Include="System.Xml" /> </ItemGroup>
<httpCompression directory="%SystemDrive%\inetpub\temp\IIS Temporary Compressed Files"> <scheme name="gzip" dll="%Windir%\system32\inetsrv\gzip.dll" staticCompressionLevel="9" dynamicCompressionLevel="4" /> <scheme name="deflate" dll="%Windir%\system32\inetsrv\gzip.dll" staticCompressionLevel="9" dynamicCompressionLevel="4" /> <dynamicTypes> <add mimeType="text/*" enabled="true" /> <add mimeType="message/*" enabled="true" /> <add mimeType="application/x-javascript" enabled="true" /> <add mimeType="application/atom+xml; charset=utf-8" enabled="true" /> <add mimeType="*/*" enabled="false" /> </dynamicTypes> <staticTypes> <add mimeType="text/*" enabled="true" /> <add mimeType="message/*" enabled="true" /> <add mimeType="application/javascript" enabled="true" /> <add mimeType="*/*" enabled="false" /> </staticTypes> </httpCompression>
var browser = Request.Browser.Browser + " " + Request.Browser.Version;
برای مثال با فایرفاکس، چنین خروجی را دارد:
اما ... با مرورگر جدید Edge مایکروسافت، خروجی کروم را مشاهده خواهیم کرد:
از این جهت که user agent این مرورگر، چنین شکلی را دارد و ختم به edge است:
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.135 Safari/537.36 Edge/12.10240
برای رفع این مشکل، نیاز است فایل جدیدی را به مجموعهی «browser definition files» دات نت اضافه کنیم. این فایلها عموما در مسیر زیر یافت میشوند:
<windir>\Microsoft.NET\Framework\<ver>\CONFIG\Browsers
C:\Windows\Microsoft.NET\Framework\v4.0.30319\Config\Browsers
با این محتویات:
<browsers> <browser id="Edge" parentID="Chrome"> <identification> <userAgent match="Edge/(?'version'(?'major'\d+)(?'minor'\.\d+))" /> </identification> <capabilities> <capability name="browser" value="Edge" /> <capability name="version" value="${version}" /> <capability name="majorversion" value="${major}" /> <capability name="minorversion" value="${minor}" /> </capabilities> </browser> </browsers>
اکنون پس از این تنظیمات، برنامه (تفاوتی نمیکند که وب فرم باشد یا MVC) اطلاعات صحیحی را نمایش میدهد: