ASP.Net Core MVC رد Scaffolding داجیا : هلاقم ناونع · ASP.Net Core MVC رد...
Transcript of ASP.Net Core MVC رد Scaffolding داجیا : هلاقم ناونع · ASP.Net Core MVC رد...
ASP.Net Core MVCدر Scaffoldingایجاد عنوان مقاله :
وتنظیم کننده : مرجع تخصصی برنامه نویسان تهیه
www.barnamenevisan.org [email protected]
آموزش داده خواهد شد و پس از آن Db-First به شکل Entityframework Core در این مقاله نحوه استفاده از
.آموزش داده می شود Scaffold از طریق View نحوه ساخت کنترلر و
مباحث این مقاله
هاPackage مدیریت -1
2- EF Core Model(DB-First)
3- MVC Core Scaffolding
(File > New > Project ).ابتدا یک پروژه جدید می سازیم
ASP.Net Core MVCدر Scaffoldingایجاد عنوان مقاله :
وتنظیم کننده : مرجع تخصصی برنامه نویسان تهیه
www.barnamenevisan.org [email protected]
را انتخاب ASP.Net Core Web Application و سپس گزینهرا انتخاب کرده Net Core. از منوی سمت چپ
.کنید
.را بزنید OK را انتخاب کرده و Web Application گزینه
.به شکل زیر خواهد بود solution explorer پس از تایید مرحله قبل پروژه باز می شود و
ASP.Net Core MVCدر Scaffoldingایجاد عنوان مقاله :
وتنظیم کننده : مرجع تخصصی برنامه نویسان تهیه
www.barnamenevisan.org [email protected]
زیر در دیتابیس query بسازید و جدول های داخل دیتابیس را به وسیله PhoneBook یک دیتابیس جدید با نام
.اضافه کنید
USE [PhoneBook] GO /****** Object: Table [dbo].[Contacts] Script Date: 12/9/2016 2:47:49 AM ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[Contacts]( [ContactID] [int] IDENTITY(1,1) NOT NULL, [FirstName] [nvarchar](50) NULL, [LastName] [nvarchar](50) NULL, [Phone] [nvarchar](50) NULL, [Email] [nvarchar](50) NULL, CONSTRAINT [PK_Contacts] PRIMARY KEY CLUSTERED ( [ContactID] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY] GO
Entity Framework Core
Entity Framework (EF) Core یک تکنولوژی برای دسترسی به داده ها است که برای برنامه های چند سکویی
را باز کنید و بسته هایی که در زیر آمده را در بخش project.json مورد استفاده قرار می گیرد. فایل
Dependency و Tools اضافه کنید.
Dependency Package
//Database Provider for EF Core "Microsoft.EntityFrameworkCore.SqlServer": "1.0.1", //EF Core Package Manager Console Tools "Microsoft.EntityFrameworkCore.Tools": "1.0.0-preview2-final",
ASP.Net Core MVCدر Scaffoldingایجاد عنوان مقاله :
وتنظیم کننده : مرجع تخصصی برنامه نویسان تهیه
www.barnamenevisan.org [email protected]
//EF Core Funtionality for MSSQL Server "Microsoft.EntityFrameworkCore.SqlServer.Design": "1.0.1"
Tools
//Access Command Tools EF Core "Microsoft.EntityFrameworkCore.Tools": "1.0.0-preview2-final",
EntityFrameworkCore.SqlServer – تامین کننده دیتابیس، این بسته به Entity Framework Core زه اجا
.کار کند Microsoft SQL Server می دهد که بتواند با
EntityFrameworkCore.SqlServer.Design – این بسته به Entity Framework Core اجازه می دهد که از
.استفاده کند Microsoft SQL Server در EF Core Migration قابلیت هایش مثل
EntityFrameworkCore.Tools – یک ابزار Command line برای EF Core که شامل دستورهای زیر است
Package Manager Console برای
1-Scaffold-DbContext
2-Add-Migration
3-Update-Database
Command Window برای
dotnet ef dbcontext scaffold
.، به اجرای چند دستور در برنامه می پردازیمcommand line در این بخش با استفاده از
ASP.Net Core MVCدر Scaffoldingایجاد عنوان مقاله :
وتنظیم کننده : مرجع تخصصی برنامه نویسان تهیه
www.barnamenevisan.org [email protected]
.را باز کنید Command windowرا نگه دارید و راست کلیک کنید و Shift به دایرکتوری پروژه بروید و کلید
ASP.Net Core MVCدر Scaffoldingایجاد عنوان مقاله :
وتنظیم کننده : مرجع تخصصی برنامه نویسان تهیه
www.barnamenevisan.org [email protected]
Command
dotnet ef –help
Command
dotnet ef dbcontext scaffold "Server=DESKTOP-5B67SHH;Database=PhoneBook;Trusted_Connection=True;" Microsoft.EntityFrameworkCore.SqlServer --output-dir Models
.فایل های داخل دیتابیس ساخته شده اند Model می بینیم که در داخل فولدر solution explorer در
ASP.Net Core MVCدر Scaffoldingایجاد عنوان مقاله :
وتنظیم کننده : مرجع تخصصی برنامه نویسان تهیه
www.barnamenevisan.org [email protected]
.به شکل زیر ساخته شده است PhoneBookContext کالس
public partial class PhoneBookContext : DbContext { protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) { #warning To protect potentially sensitive information in your connection string, you
for http://go.microsoft.com/fwlink/?LinkId=723263should move it out of source code. See guidance on storing connection strings. optionsBuilder.UseSqlServer(@"Server=DESKTOP-5B67SHH;Database=PhoneBook;Trusted_Connection=True;"); } protected override void OnModelCreating(ModelBuilder modelBuilder) { modelBuilder.Entity<Contacts>(entity => { entity.HasKey(e => e.ContactId) .HasName("PK_Contacts"); entity.Property(e => e.ContactId).HasColumnName("ContactID"); entity.Property(e => e.Email).HasMaxLength(50); entity.Property(e => e.FirstName).HasMaxLength(50); entity.Property(e => e.LastName).HasMaxLength(50); entity.Property(e => e.Phone).HasMaxLength(50); });
ASP.Net Core MVCدر Scaffoldingایجاد عنوان مقاله :
وتنظیم کننده : مرجع تخصصی برنامه نویسان تهیه
www.barnamenevisan.org [email protected]
} public virtual DbSet<Contacts> Contacts { get; set; } }
ASP.Net MVC Core در Scaffold آموزش
نیز موجود است، فقط Net Core. استفاده می کردیم، این قابلیت در scaffold از امکان Net. در ورژن های قبلی
را باز کرده و بسته های زیر را project.json استفاده از آن برای بار اول شاید یک مقدار پیچیده به نظر بیاید. فایل
.به آن اضافه کنید
Dependency Package
//Code Generators Package Generate Controller,Views "Microsoft.VisualStudio.Web.CodeGenerators.Mvc": "1.0.0-preview2-final", "Microsoft.VisualStudio.Web.CodeGeneration.Tools": "1.0.0-preview2-final"
Tools
//Access Command Tools Code Generation "Microsoft.VisualStudio.Web.CodeGeneration.Tools": "1.0.0-preview2-final"
فایل را ذخیره کنید و بسته ها به صورت اتوماتیک به برنامه اضافه می شوند. پس از نصب بسته ها، حاال وقت استفاده
.ها است View برای ساخت کنترلر ها و scaffold از
به کمک رابط کاربری Scaffold استفاده از
.را انتخاب کنید New Scaffolding Item گزینه ADD روی فولدر کنترلر راست کلیک کرده و پس از انتخاب
ASP.Net Core MVCدر Scaffoldingایجاد عنوان مقاله :
وتنظیم کننده : مرجع تخصصی برنامه نویسان تهیه
www.barnamenevisan.org [email protected]
.را انتخاب کنید scaffold گزینه مورد نظر برای
را بزنید تا ADD ر را هم انتخاب کنید و کلیدمورد نظ View را مشخص کرده و شرایط context و model حاال
.این فرآیند کامل شود
ASP.Net Core MVCدر Scaffoldingایجاد عنوان مقاله :
وتنظیم کننده : مرجع تخصصی برنامه نویسان تهیه
www.barnamenevisan.org [email protected]
.ها ساخته شده اند view می توانیم ببینم که solution explorer پس از مدتی صبر کردن، در داخل
.پیام خروجی به شکل زیر خواهد بود
C:\Program Files\dotnet\dotnet.exe aspnet-codegenerator --project "E:\Documents\Article\ScaffoldingCoreMVC\CoreMVCScaffolding\src\CoreMVCScaffolding" controller --force --controllerName ContactsController --model CoreMVCScaffolding.Models.Contacts --dataContext CoreMVCScaffolding.Models.PhoneBookContext --relativeFolderPath Controllers --controllerNamespace CoreMVCScaffolding.Controllers --useDefaultLayout Finding the generator 'controller'... Running the generator 'controller'... Attempting to compile the application in memory Attempting to figure out the EntityFramework metadata for the model and DbContext: Contacts Added Controller : \Controllers\ContactsController.cs Added View : \Views\Contacts\Create.cshtml Added View : \Views\Contacts\Edit.cshtml Added View : \Views\Contacts\Details.cshtml Added View : \Views\Contacts\Delete.cshtml Added View : \Views\Contacts\Index.cshtml
ASP.Net Core MVCدر Scaffoldingایجاد عنوان مقاله :
وتنظیم کننده : مرجع تخصصی برنامه نویسان تهیه
www.barnamenevisan.org [email protected]
RunTime 00:00:07.87
Scaffold به کمک CommandLine
استفاده کنیم. به دایرکتوری پروژه رفته و کلید Scaffold در پروژه هایمان از CommandLine می توان از طریق
Shift راست کلیک کنید و را نگه دارید و command window را انتخاب کنید. برای مشاهده اطالعات کمکی از
دستور زیر استفاده کنید
Command
dotnet aspnet-codegenerator --help
.را ساخت View است می توان کنترلر و model به کمک دستور زیر که شامل آدرس پروژه و اطالعات
Command
dotnet aspnet-codegenerator --project "E:\Documents\Article\ScaffoldingCoreMVC\CoreMVCScaffolding\src\CoreMVCScaffolding" controller --force --controllerName ContactsController --model CoreMVCScaffolding.Models.Contacts --dataContext CoreMVCScaffolding.Models.PhoneBookContext --relativeFolderPath Controllers --controllerNamespace CoreMVCScaffolding.Controllers –useDefaultLayout
ASP.Net Core MVCدر Scaffoldingایجاد عنوان مقاله :
وتنظیم کننده : مرجع تخصصی برنامه نویسان تهیه
www.barnamenevisan.org [email protected]
یک Error List بخش در برنامه داخل در. شد ساخته model یاز رو View همانطور که مشخص است، کنترلر و
، نمایش داده می شودDbContext اخطار در مورد انتقال اطالعات حساس از طریق
.ه استاست که باعث ایجاد اخطار باال شد DbContext این بخش در
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) { #warning To protect potentially sensitive information in your connection string, you should
for guidance http://go.microsoft.com/fwlink/?LinkId=723263move it out of source code. See on storing connection strings. optionsBuilder.UseSqlServer(@"Server=DESKTOP-5B67SHH;Database=PhoneBook;Trusted_Connection=True;"); }
برای connectionstring یک سرویس بسازید که اطالعات startup این بخش را کامنت کنید و در داخل کالس
.را نگه داری کند DbContext دسترسی به
//This method gets called by the runtime. Use this method to add services to the container.
ASP.Net Core MVCدر Scaffoldingایجاد عنوان مقاله :
وتنظیم کننده : مرجع تخصصی برنامه نویسان تهیه
www.barnamenevisan.org [email protected]
public void ConfigureServices(IServiceCollection services) { // Add framework services. services.AddMvc(); var connection = @"Server=DESKTOP-5B67SHH;Database=PhoneBook;Trusted_Connection=True;"; services.AddDbContext<PhoneBookContext>(options => options.UseSqlServer(connection)); }
.اگر بخواهیم پروژه را اجرا کنیم، برنامه ارور می دهد و اجرا نمی شود، توضیحات ارور در پایین آمده است
InvalidOperationException: No database provider has been configured for this DbContext. A provider can be configured by overriding the DbContext.OnConfiguring method or by using AddDbContext on the application service provider. If AddDbContext is used, then also ensure that your DbContext type accepts a DbContextOptions<TContext> object in its constructor and passes it to the base constructor for DbContext.
ASP.Net Core MVCدر Scaffoldingایجاد عنوان مقاله :
وتنظیم کننده : مرجع تخصصی برنامه نویسان تهیه
www.barnamenevisan.org [email protected]
تنظیم نشده است. توجه کنید که ما از DbContext این خطا بیان می کند که هیچ تامین کننده دیتابیسی برای این
AddDbContext در داخل متد ConfigureServices(IServiceCollection services) استفاده کرده ایم.
services.AddDbContext<PhoneBookContext>(options => options.UseSqlServer(connection));
DbContext نفرستادیم، ما نیاز داریم که از سازنده زیر برای ارسال به سازنده اصلی DbContext اما آن را به
.استفاده کنیم
public PhoneBookContext(DbContextOptions<PhoneBookContext> options) : base(options) { }
.یا که به کمک دستور زیر برنامه را اجرا کنیمبرنامه را اجرا کنیم Ctrl+f5 حاال ما می توانیم به کمک دکمه های
Command
dotnet run
.را وارد کنید. برنامه در حال اجرا را خواهید دیدhttp://localhost:5000 گر را باز کرده و آدرسمرور
عکسهای خروجی
ASP.Net Core MVCدر Scaffoldingایجاد عنوان مقاله :
وتنظیم کننده : مرجع تخصصی برنامه نویسان تهیه
www.barnamenevisan.org [email protected]
ASP.Net Core MVCدر Scaffoldingایجاد عنوان مقاله :
وتنظیم کننده : مرجع تخصصی برنامه نویسان تهیه
www.barnamenevisan.org [email protected]
ASP.Net Core MVCدر Scaffoldingایجاد عنوان مقاله :
وتنظیم کننده : مرجع تخصصی برنامه نویسان تهیه
www.barnamenevisan.org [email protected]