语言吧技术网欢迎您投稿,程序员的世界我懂你!=====>点此登录投搞
当前位置: 首页 >>ASP.NET >>MVC基础 >>C#编程中EF框架学习初级入门 (一对多、多对多)

C#编程中EF框架学习初级入门 (一对多、多对多)

2019/8/29 11:49:07 0人评论 74次 作者:admin

1、创建新项目并引入Entity Framework

1.png

2.png

然后就可以开始使用EF了

2、使用一对多

Users 用户类,UserDetail用户详情类:一个用户对应多个详情(仅用于测试)

 public class UserDetail

     {

         public int DetailId { get; set; }

         public string NAME { get; set; }

         public int uid { get; set; }

         public string remark { get; set; }

         public virtual Users user { get; set; }

     }

     public class Users

     {

         public int id { get; set; }

         public string Name { get; set; }

         public int Age { get; set; }

         public DateTime Birth { get; set; }

         public virtual ICollection<UserDetail> detail { get; set; }

 

     }


3.png


ObjectContext类:

 public class ObjectContext : DbContext

     {

         public ObjectContext()

             : base("server=.;uid=xx;pwd=xxx;database=XXX")

         {

 

         }

         protected override void OnModelCreating(DbModelBuilder modelBuilder)

         {

             base.OnModelCreating(modelBuilder);

             modelBuilder.Entity<Users>().HasKey(p => p.id);

             modelBuilder.Entity<UserDetail>().ToTable("UserDetail");

             modelBuilder.Entity<UserDetail>().HasKey(p => p.DetailId);

             modelBuilder.Entity<UserDetail>().Property(p => p.NAME).HasColumnName("NAME");

             modelBuilder.Entity<UserDetail>().HasRequired(p => p.user).WithMany(p => p.detail).HasForeignKey(p => p.uid);

         }

         public DbSet<Users> users { get; set; }

         public DbSet<UserDetail> userdetail { get; set; }

 

     }


查询方法:

 public void GetAll()

         {

             using (ObjectContext db = new ObjectContext())

             {

                 var users = (from a in db.users select a).ToList<Users>();

                 for (int i = 0; i < users.Count; i++)

                 {

                     Console.WriteLine("ID:"+users[i].id+",Name:"+users[i].Name);

                     foreach (var item in users[i].detail)

                     {

                         Console.WriteLine("  id:" + item.DetailId + ",NAME" + item.NAME);

                     }

                 }

             }

         }

删除和修改子集同时进行方法

 public void Update()

 {

 using (ObjectContext db = new ObjectContext())

             {

                 var users = (from a in db.users where a.id == 1 select a).First();

                 //删除子集

                 var detailitem=users.detail.Where(p=>p.DetailId==7).FirstOrDefault();

                 db.Entry(detailitem).State = System.Data.Entity.EntityState.Deleted;

                 users.detail.Remove(detailitem);

                 //修改子集

                 var detailitem2 = users.detail.Where(p=>p.DetailId==2).FirstOrDefault();

                 detailitem2.NAME = "这是修改后的数据";

                 db.Entry(detailitem2).State = System.Data.Entity.EntityState.Modified;

                 db.SaveChanges();

             }

 }

3、使用多对多

新增一个角色类 Roles


 public class Roles

     {

         public Roles()

         {

             users = new HashSet<Users>();

         }

         public int RoleID { get; set; }

         public string RoleName { get; set; }

         public string Remark { get; set; }

         public virtual ICollection<Users> users { get; set; }

     }


 

修改ObjectContext类:


             modelBuilder.Entity<Roles>().HasKey(p => p.RoleID);

             //modelBuilder.Entity<UserRoles>().HasKey(p => p.ID);

             modelBuilder.Entity<Roles>().HasMany(p => p.users).WithMany(p => p.roles).Map(

                 p =>

                 {

                     p.MapLeftKey("RoleId");

                     p.MapRightKey("UserId");

                     p.ToTable("UserRoles");

                 });

4、测试方法:

 public static void AddUserRole()

         {

             using (ObjectContext db = new ObjectContext())

             {

                 //添加一个用户 两个角色

                 var user = new Users() { Name = "Test用户1", Age = 20, Birth = DateTime.Now };

                 var role1 = new Roles() { RoleName = "Test角色1" };

                 var role2 = new Roles() { RoleName = "Test角色2" };

                 user.roles.Add(role1);

                 user.roles.Add(role2);

                 db.users.Add(user);

                 db.SaveChanges();

             }

         }


查询:

 public static void GetAllUserRoles()

         {

             using (ObjectContext db = new ObjectContext())

             {

                 var users = (from a in db.users select a).ToList<Users>();

                 if (users != null)

                 {

                     Console.WriteLine("User查询结果:");

                     foreach (var item in users)

                     {

                         Console.WriteLine("UserID:" + item.id + ",UserName:" + item.Name + ",Birth:" + item.Birth);

                         if (item.roles != null)

                         {

                             foreach (var role in item.roles)

                             {

                                 Console.WriteLine("  RoleId:" + role.RoleID + ",RoleNmae:" + role.RoleName + ",UserId:" + item.id);

                             }

                         }

                     }

                 }

                 var roles = (from a in db.roles select a).ToList<Roles>();

                 if (roles != null)

                 {

                     Console.WriteLine("Role查询结果:");

                     foreach (var item in roles)

                     {

                         Console.WriteLine("RoleID:" + item.RoleID + ",RoleName:" + item.RoleName);

                         if (item.users != null)

                         {

                             foreach (var user in item.users)

                             {

                                 Console.WriteLine("  UserID:" + user.id + ",UserName:" + user.Name + ",Birth:" + user.Birth + ",RoleID:" + item.RoleID);

                             }

                         }

                     }

                 }

             }

         }


 


然后写完测试。。。


源代码:EFDemo

EFDemo.7z


上一篇:没有了

下一篇:MVC4 @helper辅助方法

相关文章

CopyRight:2007-2018 语言吧 备案ICP:湘ICP备09009000号-15 http://www.yuyanba.com
欢迎【广东省 广州市】的朋友
内容与素材部分来源于网络,如有侵权请告知删除
分享按钮