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

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

کاربر سایت

shahrokh1111g

عضویت از 1397/02/31

چگونگی دسترسی به جداول جدیدی که توسط migration در بانک ایجاد شده است

  • چهارشنبه 3 اردیبهشت 1399
  • 08:13
تشکر میکنم

درود بر شما. من جدول یوزر و جدول رل را در پوشه مدل خود ایجاد کرده ام و ریلیشن چند به چند بین این دو برقرار کرده ام. بنابراین یک جدول جدید به نام UserRole توسط مایگریشن برای من ایجاد شده است. حال من چگونه میتوانم یک کنترلر ایجاد کنم که اکشن ریزالت های آن کنترلر بتواند عمل های کراد یعنی سلکت، اینسرت، آپدیت و دیلیت را برای جدول یوزررل داشته باشد؟

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

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

mahdishams

عضویت از 1399/02/06

  • شنبه 6 اردیبهشت 1399
  • 10:29
سلام هنگامی که در حال تعریف پرورپرتی های خودتون هستید باید صفت های مورد نظر رو به پروپرتی ها داده باشید به طور مثال: [Key] و باید برای استفاده از رابطه بین دو جدول foreign key تعریف کرده باشید مثلا اگر جدول user دارای پرورپرتی userId هست در جدول واسط یا همون userRole باید پروپرتی با نام userId موجود باشد در این صورت اگر شما کاربری در کنترلر اضافه ،دریافت،حذف،آپدیت کنید (CRUD) هم جدول role و هم user و هم userRole اپدیت خواهد شد
کاربر سایت

shahrokh1111g

عضویت از 1397/02/31

  • شنبه 6 اردیبهشت 1399
  • 18:22


 
من برای پیاده سازی اتربیوتها و برای ریلیشن ها از fluent api استفاده کرده ام.
همونطور که در کد ها مشاهده میکنید من در ابتدا جدول یوزررل ندارم و این جدول را مایگریشن برای من ایجاد میکند بنابراین نمیتوانم کنترلر برای آن ایجاد کنم.
کدها را ارسال میکنم لطفا راهنمایی بفرمائید
    public class User
    {
        #region Property

        public int UserId { get; set; }
        
        [Display(Name = nameof(UserMobile), ResourceType = typeof(ResLabel))]
        public string UserMobile { get; set; }

        [Display(Name = nameof(UserPassword), ResourceType = typeof(ResLabel))]
        public string UserPassword { get; set; }

        #endregion

        #region Relationship

        //User 8->8 Role
        public virtual IList<Role> Roles { get; set; }

        #endregion
    }
 public class Role
    {
        #region Property

        public int RoleId { get; set; }

        [Display(Name = nameof(RoleName), ResourceType = typeof(ResLabel))]
        public string RoleName { get; set; }

        [Display(Name = nameof(RoleDescription), ResourceType = typeof(ResLabel))]
        public string RoleDescription { get; set; }

        #endregion

        #region Relationship

        //Role 8->8 User
        public virtual IList<User> Users { get; set; }

        #endregion

    }
  public class MyContext : DbContext
    {
        #region DbSet

        public virtual DbSet<Role> Roles { get; set; }
            public virtual DbSet<User> Users { get; set; }

        #endregion

        protected override void OnModelCreating(DbModelBuilder modelBuilder)
        {

            #region Attribute
         
            #region Role

            #region HasKey

            modelBuilder
                .Entity<Role>()
                .HasKey(t => t.RoleId);

            modelBuilder
                .Entity<Role>()
                .Property(t => t.RoleId)
                .HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity);

            #endregion

            #region HasMaxLength

            modelBuilder
                .Entity<Role>()
                .Property(t => t.RoleName)
                .HasMaxLength(20);

            modelBuilder
                .Entity<Role>()
                .Property(t => t.RoleDescription)
                .HasMaxLength(150);

            #endregion

            #region IsRequired

            modelBuilder
                .Entity<Role>()
                .Property(t => t.RoleName)
                .IsRequired();

            #endregion

            #endregion

            #region User

            #region HasKey

            modelBuilder
                .Entity<User>()
                .HasKey(t => t.UserId);

            modelBuilder
                .Entity<User>()
                .Property(t => t.UserId)
                .HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity);

            #endregion

            #region HasMaxLength

            modelBuilder
                .Entity<User>()
                .Property(t => t.UserMobile)
                .HasMaxLength(11);

            modelBuilder
                .Entity<User>()
                .Property(t => t.UserPassword)
                .HasMaxLength(50);

            #endregion

            #region IsRequired

            modelBuilder
                .Entity<User>()
                .Property(t => t.UserMobile)
                .IsRequired();

            modelBuilder
                .Entity<User>()
                .Property(t => t.UserPassword)
                .IsRequired();

            #endregion

            #endregion

            #endregion

            #region RelationShip

            #region ManyToMany

            modelBuilder
                           .Entity<User>()
                           .HasMany(p => p.Roles)
                           .WithMany(o => o.Users)
                           .Map(m =>
                           {
                               m.ToTable("UserRole");
                               m.MapLeftKey("UserId");
                               m.MapRightKey("RoleId");
                           });

            modelBuilder.Conventions.Remove<ManyToManyCascadeDeleteConvention>();

            #endregion

            #endregion

            base.OnModelCreating(modelBuilder);
        }

کاربر سایت

mahdishams

عضویت از 1399/02/06

  • شنبه 6 اردیبهشت 1399
  • 20:32
مشکل اصلی این هست که در مدل user اولا:برای ارتباط باید پروپرتی RoleId رو در مدل user قرار بدید دوما:بالای userId صفت [key] رو بدید و در مدل Role اولا:برای ارتباط با یوزر UserId رو در مدل role قرار بدید دوما:بالای roleId صفت [key] رو بدید که بتونن با همدیگر ارتباط برقرار کنن
کاربرانی که از این پست تشکر کرده اند

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

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

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