درود بر شما. من جدول یوزر و جدول رل را در پوشه مدل خود ایجاد کرده ام و ریلیشن چند به چند بین این دو برقرار کرده ام. بنابراین یک جدول جدید به نام UserRole توسط مایگریشن برای من ایجاد شده است. حال من چگونه میتوانم یک کنترلر ایجاد کنم که اکشن ریزالت های آن کنترلر بتواند عمل های کراد یعنی سلکت، اینسرت، آپدیت و دیلیت را برای جدول یوزررل داشته باشد؟
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); }
هیچ کاربری تا کنون از این پست تشکر نکرده است
با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)