آموزش Asp.net Identity MVC (بخش اول)
بسم الله الرحمن الرحیم
آموزش Asp.net Identity MVC (بخش اول)
آموزش Asp.net Identity (بخش دوم)
آموزش Asp.net Membership (رفع خطا)
پس از اراائه ASP.NET Identity امکانات جدیدی در اختیار برنامه نویسان قرار گرفت ولی متاسفانه کمی این تکنولوژی کمی گیج کننده است. به همین دلیل سعی کردم یک مثال را برای شما عزیزان در اینجا قرار دهم.
در این مقاله authentication بر اساس cookie را در ASP.NET Identity بررسی خواهیم کرد.
Project Setup
یک Empty ASP.NET MVC web application ایجاد کنید.
• از منوی File گزینه New Project و سپس "ASP.NET Web Application" را انتخاب کنید.
• از پنجره باز شدهASP.NET گزینه "Empty" و در قسمت تنظیمات گزینه MVC را انتخاب کنید.
حال یک پروژه ASP.NET MVC application ایجاد کردید.
آموزش Code First Data Annotations - بخش چهارم
بسم الله الرحمن الرحیم
برای مشاهده سایر بخش های دوره آموزش Code First Data Annotations از طریق لینکهای زیر اقدام نمایید.
بخش چهارم
Index
ایندکس گزاری بر روی جداول
خاصیت Index در EF6.1 معرفی شده است و فقط توسط این نسخه از Entity Framework می توانید این کار را انجام دهید. اگر از نسخه های قدیمی Entity Framework استفاده می کنید نمی توانید این کار را انجام دهبد.
شما می توانید بر روی یک یا چند ستون از جدول خود با استفاده از IndexAttribute ایندکس گذاری کنید.
اضافه کردن این خاصیت به یک یا چند پراپرتی باعث می شود EF در زمان ایجاد دیتابیس یا اگر شما از Code First Migrations استفاده کنید scaffold ایندکس های مربوطه را ایجاد کند.
مثال، در زیر index بر روی ستون های Rating و Posts ایجاد شده است.
آموزش Code First Data Annotations بخش سوم
بسم الله الرحمن الرحیم
برای مشاهده سایر بخش های دوره آموزش Code First Data Annotations از طریق لینکهای زیر اقدام نمایید.
بخش سوم
Table and Column
اگر شما با Code First دیتابیس خود را ایجاد می کنید، ممکن است بخواهید نام جدول و ستونهای خود را تغییر دهید. شما همچنین می توانید از Code First برای یک دیتابیس که قبلا وجود داشته است استفاده کنید. همیشه این طور نیست که نام جدول ها و ستون ها با نام کلاس ها و پراپرتی ها یکسان باشد.
نام کلاس من Blog بود و بر اساس قرارداد Code First، به صورت پیش فرض این کلاس به یک جدول با نام Blog نگاشت (map) می شود. اگر شما این را نمی خواهید می توانید نام جدول خود را با استفاده از خاصیت Table تغییر دهید.
در اینجا ما برای مثال نام کلاس Blog را برای ایجاد جدول به نام InternalBlogs تغییر داده ایم:
[Table("InternalBlogs")] public class Blog
آموزش Code First Data Annotations - بخش دوم
بسم الله الرحمن الرحیم
بخش دوم
ComplexType
نوع های پیچیده
ممکن است شما یک نوع غیر معمول برای فیلد های خود بخواهید تعریف کنید، این نوع شما ممکن است یک کلاس باشد، مثلا کلاس زیر را در نظر بگیرید:
public class BlogDetails
{
public DateTime? DateCreated { get; set; }
[MaxLength(250)]
public string Description { get; set; }
}
آموزش Code First Data Annotations
بسم الله الرحمن الرحیم
برای مشاهده بخش های دوره آموزش Code First Data Annotations از طریق لینکهای زیر اقدام نمایید.
آموزش Code First
Data Annotations
در طراحی پایگاه داده به وسیله Entity Framework در MVC برای مشخص کردن خصوصیت های جداول و فیلدها می بایست از خاصیتی به نام Data Annotations استفاده کنید. کار با این خصوصیت بسیار ساده می باشد.
ما دو کلاس را برای پروژه خود نیاز داریم، این دو کلاس را با نام های Blog.cs و Post.cs در فولدر Model پروژه MVC خود ایجاد می کنیم و کد های زیر را در آن ها قرار می دهیم.
public class Blog
{
public int Id { get; set; }
public string Title { get; set; }
public string BloggerName { get; set;}
public virtual ICollection<Post> Posts { get; set; }
}
public class Post
{
public int Id { get; set; }
public string Title { get; set; }
public DateTime DateCreated { get; set; }
public string Content { get; set; }
public int BlogId { get; set; }
public ICollection<Comment> Comments { get; set; }
}
متوقف کردن اجرای دستورات برای مدت زمان 5 ثانیه
بسم الله الرحمن الرحیم
در خصوص متوقف کردن و Sleep کردن برنامه چندین راه متفاوت وجود دا
SendKeys
بسم الله الرحمن الرحیم
در بعضی مواقع شما نیاز دارید که یکی از کامندهای کیبورد را خودتان اجرا کنید، مثلا شما می خواهید پس از بازشدن برنامه یک MessageBox باز شود و پس از آن اگر کاربر بر روی فرم شما کلیک کرد کامند Enter کیبورد شما اجرا شود.
// Clicking Button1 causes a message box to appear.
private void Button1_Click(System.Object sender, System.EventArgs e)
{
MessageBox.Sho
T4MVC
بسم الله الرحمن الرحیم
معرفی T4MVC
T4MVC می تواند بر روی نسخه های Visual Studio 2010, 2012 و 2013نصب شود وASP.NET MVC 4.0 و 5.0این Package را پشتیبانی می کنند، شاید بتوانید بر روی سایر نسخه ها از این Package استفاده کنید اما این Package فقط بر روی گزینه های گفته شده تست شده است.
نصب T4MVC
برای نصب این Package کافی است که دستور زیر را از طریق Package Manager Console اجرا کنید
Install-Package T4MVC
پس از اجرای این دستور دو فایل به پروژه شما اضافه می شود.
هدف T4MVC
این Package برای جلوگیری از نوشتن اسامی کنترلر ها و اکشن ها و در نهایت view ها به صورت Hard Code مورد استفاده قرار می گیرد.
برای مثال کدزیر را در نظر بگیرید:
<% Html.RenderPartial("DinnerForm"); %>
ما از عبارت های رشته ای برای فراخوانی این Partial استفاده کرده ایم، اگر فردا شما بخواهید این نام را تغییر دهید باید در بهترین و سریعترین روش ممکن با استفاده از Finde ویژوال استادیو تمامی نام های مربوطه را تغییر دهید.
اما چرا از ابتدا از روش دیگری استفاده نکنیم!
T4MVC در واقع نام تمامی View,Conreoller,Action ها را به صورت خودکار در خود ذخیره می کند و عملا یک Enumeration برای شما به وجود می آورد تا در آینده در صورتی که نامی را برای یک View,Conreoller,Action عوض کردید، این نام در تمامی پروژه عوض شود.
مثال:
<% Html.RenderPartial("DinnerForm"); %>
از این به بعد ما نام ها را به صورت زیر خواهیم نوشت:
<% Html.RenderPartial(MVC.Dinners.Views.DinnerForm); %>
fluent API در Code First
بسم الله الرحمن الرحیم
fluent API
در MVC برای ایجاد روابط بین جداول می توانید از fluent API استفاده کنید، این روش برای کد نویسی و طراحی دیتابیس به روش Code First می باشد:
One-to–Zero-or-One (روابط یک به یک)
modelBuilder.Entity<OfficeAssignment>()
.HasKey(t => t.InstructorID);
به رابطه بالا One-to–Zero گفته می شود زیرا شما فقط کلید اصلی جدول را مشخص کرده اید آن را به هیچ جدول دیگری ارتباط نداده اید.
modelBuilder.Entity<OfficeAssignment>()
.HasRequired(t => t.Instructor)
.WithOptional(t => t.OfficeAssignment);
در این رابطه ما یک رابطه One-to-One ایجاد کرده ایم. در این رابطه سمت OfficeAssignment اختیاری است.
خطای cycles or multiple cascade paths
بسم الله الرحمن الرحیم
خطای زیرا شاید خیلی از شما دوستان عزیز نیز مشاده کردید:
Introducing FOREIGN KEY constraint 'FK_dbo.aspnet_UsersInRoles_dbo.aspnet_Users_UserId' on table 'aspnet_UsersInRoles' may cause cycles or multiple cascade paths. Specify ON DELETE NO ACTION or ON UPDATE NO ACTION, or modify other FOREIGN KEY constraints. Could not create constraint. See previous errors
برای حل این مشکل می توانید از Fluid API استفاده کنید،
در این مثل اگر من کد زیر را به Context خود اضافه کنم مشکل بالا برطرف خواهد شد:
protected override void OnModelCreating( DbModelBuilder modelBuilder )
{
modelBuilder.Entity<aspnet_UsersInRoles>().HasMany(i => i.Users).WithRequired().WillCascadeOnDelete(false);
}
همچنین با استفاده از این کد می توانید تمامی CASCADE DELETES ها را از بین ببرید:
modelBuilder.Conventions.Remove<OneToManyCascadeDeleteConvention>();
اینم مشکل زمانی رخ می دهد که شما در طراحی دیتابیس خود یک چرخه یا Loop ایجاد کرده اید مانند تصویر زیر: