ASP.Net Core MVC رد Scaffolding داجیا : هلاقم ناونع · ASP.Net Core MVC رد...

17
ن مقاله : عنوایجاد اScaffolding درASP.Net Core MVC یه تهویسان مرجع تخصصی برنامه ن وتنظیم کننده :www.barnamenevisan.org [email protected] ده ازستفا نحوه این مقاله در اEntityframework Core به شکلDb-First اهد شد و پس از آن آموزش داده خو کنترلر و نحوه ساختView از طریقScaffold داده می شود آموزش. ین مقالهحث ا مبا1- مدیریتPackage ها2- EF Core Model(DB-First) 3- MVC Core Scaffolding سازیمد می ابتدا یک پروژه جدی.( File > New > Project)

Transcript of ASP.Net Core MVC رد Scaffolding داجیا : هلاقم ناونع · ASP.Net Core MVC رد...

Page 1: ASP.Net Core MVC رد Scaffolding داجیا : هلاقم ناونع · ASP.Net Core MVC رد Scaffolding داجیا : هلاقم ناونع ناسیون همانرب یصصخت عجرم

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 ).ابتدا یک پروژه جدید می سازیم

Page 2: ASP.Net Core MVC رد Scaffolding داجیا : هلاقم ناونع · ASP.Net Core MVC رد Scaffolding داجیا : هلاقم ناونع ناسیون همانرب یصصخت عجرم

ASP.Net Core MVCدر Scaffoldingایجاد عنوان مقاله :

وتنظیم کننده : مرجع تخصصی برنامه نویسان تهیه

www.barnamenevisan.org [email protected]

را انتخاب ASP.Net Core Web Application و سپس گزینهرا انتخاب کرده Net Core. از منوی سمت چپ

.کنید

.را بزنید OK را انتخاب کرده و Web Application گزینه

.به شکل زیر خواهد بود solution explorer پس از تایید مرحله قبل پروژه باز می شود و

Page 3: ASP.Net Core MVC رد Scaffolding داجیا : هلاقم ناونع · ASP.Net Core MVC رد Scaffolding داجیا : هلاقم ناونع ناسیون همانرب یصصخت عجرم

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",

Page 4: ASP.Net Core MVC رد Scaffolding داجیا : هلاقم ناونع · ASP.Net Core MVC رد Scaffolding داجیا : هلاقم ناونع ناسیون همانرب یصصخت عجرم

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 در این بخش با استفاده از

Page 5: ASP.Net Core MVC رد Scaffolding داجیا : هلاقم ناونع · ASP.Net Core MVC رد Scaffolding داجیا : هلاقم ناونع ناسیون همانرب یصصخت عجرم

ASP.Net Core MVCدر Scaffoldingایجاد عنوان مقاله :

وتنظیم کننده : مرجع تخصصی برنامه نویسان تهیه

www.barnamenevisan.org [email protected]

.را باز کنید Command windowرا نگه دارید و راست کلیک کنید و Shift به دایرکتوری پروژه بروید و کلید

Page 6: ASP.Net Core MVC رد Scaffolding داجیا : هلاقم ناونع · ASP.Net Core MVC رد Scaffolding داجیا : هلاقم ناونع ناسیون همانرب یصصخت عجرم

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 در

Page 7: ASP.Net Core MVC رد Scaffolding داجیا : هلاقم ناونع · ASP.Net Core MVC رد Scaffolding داجیا : هلاقم ناونع ناسیون همانرب یصصخت عجرم

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); });

Page 8: ASP.Net Core MVC رد Scaffolding داجیا : هلاقم ناونع · ASP.Net Core MVC رد Scaffolding داجیا : هلاقم ناونع ناسیون همانرب یصصخت عجرم

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 روی فولدر کنترلر راست کلیک کرده و پس از انتخاب

Page 9: ASP.Net Core MVC رد Scaffolding داجیا : هلاقم ناونع · ASP.Net Core MVC رد Scaffolding داجیا : هلاقم ناونع ناسیون همانرب یصصخت عجرم

ASP.Net Core MVCدر Scaffoldingایجاد عنوان مقاله :

وتنظیم کننده : مرجع تخصصی برنامه نویسان تهیه

www.barnamenevisan.org [email protected]

.را انتخاب کنید scaffold گزینه مورد نظر برای

را بزنید تا ADD ر را هم انتخاب کنید و کلیدمورد نظ View را مشخص کرده و شرایط context و model حاال

.این فرآیند کامل شود

Page 10: ASP.Net Core MVC رد Scaffolding داجیا : هلاقم ناونع · ASP.Net Core MVC رد Scaffolding داجیا : هلاقم ناونع ناسیون همانرب یصصخت عجرم

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

Page 11: ASP.Net Core MVC رد Scaffolding داجیا : هلاقم ناونع · ASP.Net Core MVC رد Scaffolding داجیا : هلاقم ناونع ناسیون همانرب یصصخت عجرم

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

Page 12: ASP.Net Core MVC رد Scaffolding داجیا : هلاقم ناونع · ASP.Net Core MVC رد Scaffolding داجیا : هلاقم ناونع ناسیون همانرب یصصخت عجرم

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.

Page 13: ASP.Net Core MVC رد Scaffolding داجیا : هلاقم ناونع · ASP.Net Core MVC رد Scaffolding داجیا : هلاقم ناونع ناسیون همانرب یصصخت عجرم

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.

Page 14: ASP.Net Core MVC رد Scaffolding داجیا : هلاقم ناونع · ASP.Net Core MVC رد Scaffolding داجیا : هلاقم ناونع ناسیون همانرب یصصخت عجرم

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 گر را باز کرده و آدرسمرور

عکسهای خروجی

Page 15: ASP.Net Core MVC رد Scaffolding داجیا : هلاقم ناونع · ASP.Net Core MVC رد Scaffolding داجیا : هلاقم ناونع ناسیون همانرب یصصخت عجرم

ASP.Net Core MVCدر Scaffoldingایجاد عنوان مقاله :

وتنظیم کننده : مرجع تخصصی برنامه نویسان تهیه

www.barnamenevisan.org [email protected]

Page 16: ASP.Net Core MVC رد Scaffolding داجیا : هلاقم ناونع · ASP.Net Core MVC رد Scaffolding داجیا : هلاقم ناونع ناسیون همانرب یصصخت عجرم

ASP.Net Core MVCدر Scaffoldingایجاد عنوان مقاله :

وتنظیم کننده : مرجع تخصصی برنامه نویسان تهیه

www.barnamenevisan.org [email protected]

Page 17: ASP.Net Core MVC رد Scaffolding داجیا : هلاقم ناونع · ASP.Net Core MVC رد Scaffolding داجیا : هلاقم ناونع ناسیون همانرب یصصخت عجرم

ASP.Net Core MVCدر Scaffoldingایجاد عنوان مقاله :

وتنظیم کننده : مرجع تخصصی برنامه نویسان تهیه

www.barnamenevisan.org [email protected]