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

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

کاربر سایت

محمد ملکی

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

استفاده همزمان identity2 و برای سایر کلاس های پروژه code first

  • یکشنبه 9 دی 1397
  • 11:06
تشکر میکنم

سلام من میخوام یه سایت با mvc بنویسم اومدم اول Idnetty2رو روش نصب کردم الان و کلاس های user و ... ساخته شد

الان میخوام برم بر اساس code first کلاس هامو بسازم باز باید یه Dbcontext جدا بسازم ؟

رفتم ساختم اما همین که اومدیم Migration رو فعال کنم پیغام زیر رو میده

میگه دو تا کانتکس نمیتونی داشته باشی ،میشه بگید چیکار کنم

کانتکس رو هم یکی کردم یعنی از همون ApplicationDbContext ای که برای Identity ساخته بود استفاده کردم ، و یه کلاسم ساختم رفت جدولشو توو sql  ساخت

الان سوالم اینه من مثلا یه فیلد برای جدول یوزر اضافه می کنم پیغام میده مثلاً جدول محصول هست

آیا این خط رو نباید توو ApplicationDbContext تغییر بدم؟

    Database.SetInitializer<ApplicationDbContext>(new ApplicationDbInitializer());

جاش چی باید ینویسم

؟

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

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

سهیل علیزاده

عضویت از 1396/04/09

  • یکشنبه 9 دی 1397
  • 12:12

چه پیامی دریافت می کنید؟ 

محتوای DbContext خودتون رو قرار بدید.

کاربر سایت

محمد ملکی

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

  • یکشنبه 9 دی 1397
  • 13:58

ببینید اون مشکلم حل شد

الان میخوام مثلاً Repository برای کلاسام بنویسم میزنم اون dbContext فقط Users و Roles رو میاره منظورم اینه من کلاس Category دارم میخوام لیستشو نشون بدم اما میزنیم db.Category اینو اصلا نمی شناسه

این context امه که همون context ای هست که خود Identity خودش ایجاد کرده ببینید

 public class ApplicationUser : IdentityUser
    {
        public string test { 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("DatabaseContext", throwIfV1Schema: false)
        {

        }

        DbSet<Category> Category { get; set; }
        static ApplicationDbContext()
        {
            // Set the database intializer which is run once during application start
            // This seeds the database with admin user credentials and admin role

            Database.SetInitializer<ApplicationDbContext>(new ApplicationDbInitializer());


        }

        public static ApplicationDbContext Create()
        {
            return new ApplicationDbContext();
        }
    }
}

من فقط توو همین context گفتم جداولمم بساز ولی مثلاً الان توو Repository ببینید

 public class CategoryRepository
    {
        private ApplicationDbContext db = null;

        public CategoryRepository()
        {
            db = new ApplicationDbContext();
        }

        public bool Delete(int id)
        {
            try
            {
             
                var entity=db.

ببینید الان کجا میلنگه که اصلا وقتی میزنم db. فقط Users و Roles رو میاره ، خب من اومده یه Context دیگه بسازم

برای User وIdentity باید همون Contex خودش باشه و برای کلاس های دیگه باید یه context دیگه بسازیم؟

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

من الان چیکار کنم؟

کاربر سایت

سهیل علیزاده

عضویت از 1396/04/09

  • دوشنبه 10 دی 1397
  • 10:15

access modifier عمومی یعنی public رو فراموش کردید اضافه کنید:

  DbSet<Category> Category { get; set; }

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

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

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

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