zoukankan      html  css  js  c++  java
  • EntityFramework(EF) 单表与主从表的使用

    一、单表Reader

    1 构建Reader类

    public   class Reader
        {
           public int ReaderID { get; set; }
           public string Name { get; set; }
           public int Age { get; set; }
           public string Tel { get; set; }
        
        }

    2、构建数据上下文类

     //单表数据上下文
       

     public class SingleDbContext :DbContext
        {
            public DbSet<Reader> Readers { get; set; }
            public SingleDbContext() : base("Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=NewsDB;Data Source=.") { }
            protected override void OnModelCreating(DbModelBuilder modelBuilder)
            {//防止自动把表名改成了复数形式
                      modelBuilder.Conventions.Remove<System.Data.Entity.ModelConfiguration.Conventions.PluralizingTableNameConvention>();
            }

        }

    3、在程序中测试

       static void SingleTable()
            {
                ///添加
                var reader = new Reader
                {
                    Name = "xp",
                    Age = 18,
                    Tel = "135993434"
                };
                var database = new SingleDbContext();
                database.Readers.Add(reader);
                int rows = database.SaveChanges();


                //查询
                using (var context = new SingleDbContext())
                {
                    var readers = from r in context.Readers where r.Name == "xp" select r;
                    foreach (Reader r in readers)
                        Console.WriteLine("name:" + r.Name);
                }

            }

    二 主从表

    Department

    Course

    1 构建类

    public class Department
        {
            public virtual ICollection<Course> Course { get; set; }
            public int DepartmentID { get; set; }        
            public string Name { get; set; }
            public string Tel { get; set; }
        }

     public class Course
        {
           // Primary key
          public int CourseID { get; set; }
          public string Title { get; set; }
          public int Credits { get; set; }
        // Foreign key
         public int DepartmentID { get; set; }
            // Navigationproperties
         public virtual Department Department { get; set;}
       }

    二构建数据上下文

     public class MasterSlaveDbContext: DbContext
        {
            public DbSet<Department> Department { get; set; }
            public DbSet<Course> Course { get; set; }
            public MasterSlaveDbContext() : base("Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=NewsDB;Data Source=.") { }
            
            protected override void OnModelCreating(DbModelBuilder modelBuilder)
            {//防止自动把表名改成了复数形式
                modelBuilder.Conventions.Remove<System.Data.Entity.ModelConfiguration.Conventions.PluralizingTableNameConvention>();
            }
        }

    三、测试使用

    static  void MasterSlaveTable()
            {
                ///添加
                var department = new Department
                {
                    Name = "计算机科学学院",
                    Tel = "83031222"
                };
                var database = new MasterSlaveDbContext();
                database.Department.Add(department);
                int rows = database.SaveChanges();
               
                var course = new Course
                {
                    Title = "高数",
                    Credits = 4,
                    DepartmentID= department.DepartmentID//自动获取递增主键
                };
                database.Course.Add(course);
                database.SaveChanges();


                //查询
                using (var context = new MasterSlaveDbContext())
                {


                    var dp = from d in context.Department.Include("Course") where d.DepartmentID  == 8 select d;
                    foreach (Department d in dp)
                    {
                        foreach (Course  c in d.Course)
                        {
                            Console.WriteLine("name:" + c.Title);
                        }
                    }
                }


            }

    源代码:http://download.csdn.net/detail/metal1/9855473

  • 相关阅读:
    SpringBoot2.x入门教程:引入jdbc模块与JdbcTemplate简单使用
    2.5万字长文简单总结SpringMVC请求参数接收
    SpringBoot2.x入门:使用CommandLineRunner钩子接口
    百万级别数据Excel导出优化
    SpringBoot2.x入门:应用打包与启动
    谈谈对分布式事务的一点理解和解决方案
    3W字干货深入分析基于Micrometer和Prometheus实现度量和监控的方案
    SpringBoot2.x入门教程:理解配置文件
    SpringBoot2.x入门:引入web模块
    SpringBoot2.x入门:快速创建一个SpringBoot应用
  • 原文地址:https://www.cnblogs.com/sjqq/p/8424403.html
Copyright © 2011-2022 走看看