مرجع تخصصی برنامه نویسان

انجمن تخصصی برنامه نویسان فارسی زبان

کاربر سایت

mehdi1359a

عضویت از 1394/02/03

استفاده از identity در data base first

  • چهارشنبه 9 تیر 1395
  • 17:04
تشکر میکنم

با سلام 

 نحوه استفاده از identity  را در روش database first  چگونه است؟اگه سایت مقاله مثالی هست ممنون میشم معرفی نمایید.

به عبارتی دیگه من دیتابیسم رو تو اسکیوال طراحی کردم حالا میخوام ثبت نام کاربر و ورود به سایت تعریف نقش اختصاص نقش به کاربران رو با identity پیاده سازی کنم .

با تشکر

پاسخ های این پرسش

تعداد پاسخ ها : 9 پاسخ
کاربر سایت

ایمان مدائنی

عضویت از 1392/01/20

  • چهارشنبه 9 تیر 1395
  • 17:11

کافیست که رشته اتصال در وب کانفیگ را که نامش DefaultConnection است مانند رشته اتصال خودتون تنظیم کنید

با اینکار جداول مربوطه روی بانک خودتون ساخته خواهد شد

کاربر سایت

ofoghcomputer

عضویت از 1393/07/15

  • پنجشنبه 10 تیر 1395
  • 10:28

با سلام خدمت استاد محترم

منم همین سؤال رو دارم.

این رشته رو به رشته خودم تغییر دادم.

جداول مورد نظر ساخته شد.

اما جدول user می خوام فقط فیلدهای خودم رو داشته باشه.

چند روزه هر چی می گردم متوجه نمی شم.

آیا پروژه ای رو می شناسید که با روش Database first عملیات identity رو انجام داده باشه و من ازش یاد بکیرم؟

با تشکر

کاربر سایت

ایمان مدائنی

عضویت از 1392/01/20

  • پنجشنبه 10 تیر 1395
  • 12:44

متاسفانه نمیشناشم

کاربر سایت

ofoghcomputer

عضویت از 1393/07/15

  • جمعه 11 تیر 1395
  • 00:48

استاد محترم من از دو connectionString مانند زیر استفاده می کنم:

<connectionStrings>
    <add name="DefaultConnection" connectionString="Data Source=.;Initial Catalog=Test;Integrated Security=True" providerName="System.Data.SqlClient" />
  <add name="TestEntities" connectionString="metadata=res://*/Models.Model1.csdl|res://*/Models.Model1.ssdl|res://*/Models.Model1.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=.;initial catalog=Test;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework&quot;" providerName="System.Data.EntityClient" />
</connectionStrings>

اولی برای identity و دومی برای جداول خودم.

آیا درست می باشد؟

لطفا راهنمایی نمایید.

با تشکر

کاربر سایت

ایمان مدائنی

عضویت از 1392/01/20

  • جمعه 11 تیر 1395
  • 07:48

درسته

کاربر سایت

ofoghcomputer

عضویت از 1393/07/15

  • جمعه 11 تیر 1395
  • 17:54

استاد میخوام در جدول Aspnetuser بعضی از فیلدها رو حذف کنم و فیلدهای خودم رو بزارم.

لطفا راهنمایی نمایید

با تشکر

کاربر سایت

ایمان مدائنی

عضویت از 1392/01/20

  • جمعه 11 تیر 1395
  • 20:23

میتونید وارد Model بشید و فیلدهایی که نمیخواهید حذف کنید

خوبی CodeFirst همینه با حذف فیلدها ستونها ساخته نمیشه

کاربر سایت

ofoghcomputer

عضویت از 1393/07/15

  • جمعه 11 تیر 1395
  • 23:52

استاد محترم دو سؤال دارم:

1- بر طبق مقاله ای که در سایتتون هست من قسمت RegisterViewModel را با کدهای زیر جایگزین کردم:

[Required]
        [EmailAddress]
        [Display(Name = "Email")]
        public string Email { get; set; }

        [Required]
        [StringLength(100, ErrorMessage = "The {0} must be at least {2} characters long.", MinimumLength = 6)]
        [DataType(DataType.Password)]
        [Display(Name = "Password")]
        public string Password { get; set; }

        [DataType(DataType.Password)]
        [Display(Name = "Confirm password")]
        [Compare("Password", ErrorMessage = "The password and confirmation password do not match.")]
        public string ConfirmPassword { get; set; }

        [Required]
        [DataType(DataType.Text)]
        [Display(Name = "نام ")]
        public string Name { get; set; }
        [Required]
        [DataType(DataType.Text)]
        [Display(Name = "دانشگاه ")]
        public string UniversityName { get; set; }

        [Required]
        [Display(Name = "شهر")]
        [DataType(DataType.Text)]
        public string City { get; set; }

        [Required]
        [DataType(DataType.PostalCode)]
        [Display(Name = "کد پستی")]
        public string PostalCode { get; set; }

        [Required]
        [DataType(DataType.MultilineText)]
        [Display(Name = "آدرس")]
        public string StreetAddress { get; set; }

        [Required]
        [DataType(DataType.Text)]
        [Display(Name = "کشور")]
        public string Country { get; set; }

همچنین در قسمت ApplicationUser نیز کدهای زیر را اضافه گردم:

public string UniversityName { get; set; }
        public string Name { get; set; }
        public string City { get; set; }
        public string PostalCode { get; set; }
        public string StreetAddress { get; set; }
        public string Country { get; set; }

اما دیتابیس AspNetUser شامل همان فیلدهای پیش فرض و فیلهایی که جدید اضافه شده می باشد. می خوام فقط این فیلدهای تعریف شده در قسمت ApplicationUser در جدول AspNetUser باشد. چه کار کنم؟

2- سؤال دوم این است که جداول MigrationHistory و AspNetUserClaim و AspNetUserLogins به چه درد می خورند؟

لطفا راهنمایی نمایید.

با تشکر

کاربر سایت

ofoghcomputer

عضویت از 1393/07/15

  • شنبه 12 تیر 1395
  • 19:24

استاد محترم

یرای سفارشی سازی جدولهای AspUser و حذف فیلدهای اضافی و افزودن فیلدهای دیگر کد زیر رو در IdentityModel نوشم:

 public class ApplicationUser : IdentityUser
    {

        public string UniversityName { get; set; }
        public string Name { get; set; }
        public string City { get; set; }
        public string PostalCode { get; set; }
        public string StreetAddress { get; set; }
        public string Country { get; set; }

        public async Task<ClaimsIdentity> GenerateUserIdentityAsync(UserManager<ApplicationUser> manager)
        {
            // Note the authenticationType must match the one defined in CookieAuthenticationOptions.AuthenticationType
            var userIdentity = await manager.CreateIdentityAsync(this, DefaultAuthenticationTypes.ApplicationCookie);
            // Add custom user claims here
            return userIdentity;
        }
    }

    public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
    {
        public ApplicationDbContext()
            : base("DefaultConnection", throwIfV1Schema: false)
        {
        }

        protected override void OnModelCreating(DbModelBuilder modelBuilder)
        {
            //تغییر نام پیش فرض جدول ها
            modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
            base.OnModelCreating(modelBuilder);
            modelBuilder.Entity<ApplicationUser>().ToTable("Users");
            modelBuilder.Entity<IdentityUser>().ToTable("Users");
            modelBuilder.Entity<IdentityRole>().ToTable("Roles");
            modelBuilder.Entity<IdentityUserRole>().ToTable("UserRoles");
            modelBuilder.Entity<IdentityUserClaim>().ToTable("userclaim");
            modelBuilder.Entity<IdentityUserLogin>().ToTable("userLogin");
            //AspNetUserحذف کردن بعضی فیلدهای پیش فرض ار جدول
            modelBuilder.Entity<IdentityUser>().Ignore(c => c.AccessFailedCount)
                                               .Ignore(c => c.EmailConfirmed)
                                               .Ignore(c => c.LockoutEnabled)
                                               .Ignore(c => c.LockoutEndDateUtc)
                                               .Ignore(c => c.PhoneNumber)
                                               .Ignore(c => c.PhoneNumberConfirmed)
                                               .Ignore(c => c.TwoFactorEnabled);

    }

این کدها فعلا که درست جواب میدن

گذاشتم شاید کسی هم استفاده کنه

با تشکر

کاربرانی که از این پست تشکر کرده اند

هیچ کاربری تا کنون از این پست تشکر نکرده است

اگر نیاز به یک مشاور در زمینه طراحی سایت ، برنامه نویسی و بازاریابی الکترونیکی دارید

با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)