zoukankan      html  css  js  c++  java
  • Entity Framework多对多关系

    1.模型类

        /// <summary>
        /// 角色类
        /// </summary>
        [Table("RoleTB")]
        public class RoleTB 
        {
            [Key]
            public int ID{get;set;}
            public string Name { get; set; }
            public string Desc { get; set; }
            public int Status { get; set; }
            [NotMapped]
            public virtual List<MenuTB> MenuTBs { get; set; }
            [NotMapped]
            public virtual List<UserTB> UserTBs { get; set; }
        }
        /// <summary>
        /// 用户
        /// </summary>
        [Table("UserTB")]
        public class UserTB 
        {
            [Key]
            public int ID { get; set; }
            public string UserName { get; set; }
            public string Password { get; set; }
            public string HeadImage { get; set; }
            [NotMapped]
            public virtual List<RoleTB> RoleTBs { get; set; }
        }
        /// <summary>
        /// 角色和用户中间表
        /// </summary>
        [Table("RoleUserTR")]
        public class RoleUserTR
        {
            [Key]
            [Column(Order = 0)]
            [ForeignKey("RoleTB")]
            public int RoleID { get; set; }
            public virtual RoleTB RoleTB { get; set; }
            [Key]
            [Column(Order = 1)]
            [ForeignKey("UserTB")]
            public int UserID { get; set; }
            public virtual UserTB UserTB { get; set; }
    
        }

    2.测试代码

                using(var dbContext=new EntityDbContext())
                {
                    RoleTB role = new RoleTB { 
                        Name="总管理员"
                    };
                    UserTB user1 = new UserTB { UserName = "admin", Password = "123456" };
                    UserTB user2 = new UserTB { UserName = "liandy", Password = "123456" };
                    dbContext.RoleTBs.Add(role);
                    dbContext.UserTBs.Add(user1);
                    dbContext.UserTBs.Add(user2);
                    dbContext.SaveChanges();
    
                    RoleUserTR roleUserTR1 = new RoleUserTR {
                        RoleID = role.ID,
                        UserID=user1.ID
                    };
                    RoleUserTR roleUserTR2 = new RoleUserTR
                    {
                        RoleID = role.ID,
                        UserID = user2.ID
                    };
                    dbContext.RoleUserTRs.Add(roleUserTR1);
                    dbContext.RoleUserTRs.Add(roleUserTR2);
                    dbContext.SaveChanges();
                }
                using (var dbContext = new EntityDbContext())
                {
                    UserTB user = dbContext.UserTBs.Where(u => u.UserName == "liandy").FirstOrDefault();
                    dbContext.UserTBs.Remove(user);
                    dbContext.SaveChanges();
                } 
                using (var dbContext = new EntityDbContext())
                {
                    RoleTB role = dbContext.RoleTBs.Where(u => u.ID == 1).FirstOrDefault();
                    List<UserTB> userTBs = dbContext.RoleUserTRs.Where(u => u.RoleID == role.ID).Select(u => u.UserTB).ToList();
                } 

    3.验证数据库

        /// <summary>    /// 角色类    /// </summary>    [Table("RoleTB")]    public class RoleTB     {        [Key]        public int ID{get;set;}        public string Name { get; set; }        public string Desc { get; set; }        public int Status { get; set; }        [NotMapped]        public virtual List<MenuTB> MenuTBs { get; set; }        [NotMapped]        public virtual List<UserTB> UserTBs { get; set; }    }

  • 相关阅读:
    关于typedef在struct使用上的一些问题
    软件工程--趣盒--第四次团队作业--软件实现与测试
    趣盒——快速入门手册
    软件工程趣盒软件设计
    软件工程项目需求分析
    在VS2017下配置OpenGL
    破阵子青铜团队介绍以及项目背景介绍
    海客谈瀛洲,烟涛微茫信难求——微信
    第一次作业:扑通扑通 我的IT
    5.线性回归算法
  • 原文地址:https://www.cnblogs.com/liandy0906/p/7733330.html
Copyright © 2011-2022 走看看