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

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

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

یکشنبه, 09 دی 1397 11:06

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

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

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

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

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

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

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

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

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

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

؟

یکشنبه, 09 دی 1397 12:12

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

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

یکشنبه, 09 دی 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 دارید

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

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

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

  DbSet<Category> Category { get; set; }

ارسال پاسخ برای این تاپیک

ارسال پاسخ مخصوص اعضا سایت می باشد ! میتوانید با حساب کاربری خود وارد سایت شده یا ثبت نام کنید