سلام من میخوام یه سایت با mvc بنویسم اومدم اول Idnetty2رو روش نصب کردم الان و کلاس های user و ... ساخته شد
الان میخوام برم بر اساس code first کلاس هامو بسازم باز باید یه Dbcontext جدا بسازم ؟
رفتم ساختم اما همین که اومدیم Migration رو فعال کنم پیغام زیر رو میده
میگه دو تا کانتکس نمیتونی داشته باشی ،میشه بگید چیکار کنم
کانتکس رو هم یکی کردم یعنی از همون ApplicationDbContext ای که برای Identity ساخته بود استفاده کردم ، و یه کلاسم ساختم رفت جدولشو توو sql ساخت
الان سوالم اینه من مثلا یه فیلد برای جدول یوزر اضافه می کنم پیغام میده مثلاً جدول محصول هست
آیا این خط رو نباید توو ApplicationDbContext تغییر بدم؟
Database.SetInitializer<ApplicationDbContext>(new ApplicationDbInitializer());
جاش چی باید ینویسم
؟
چه پیامی دریافت می کنید؟
محتوای DbContext خودتون رو قرار بدید.
ببینید اون مشکلم حل شد
الان میخوام مثلاً 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 دارید
من الان چیکار کنم؟
access modifier عمومی یعنی public رو فراموش کردید اضافه کنید:
DbSet<Category> Category { get; set; }
هیچ کاربری تا کنون از این پست تشکر نکرده است
با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)