一、单表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

EntityFramework(EF) 单表与主从表的使用的更多相关文章

  1. EntityFramework 插入自增ID主从表数据

    原因: 数据库中的两个表是主从表关系,但是没有建外键,而表的id用的是数据库的自增整数,导致在使用EF导入主从表数据时,需要先保存主表数据,取到 主表的自增id后才能插入从表数据,这样循环之下,数据插 ...

  2. EF单实对应多表

    一.单实体对应多表 适用场景主表,拥有相同主键附属表或扩展表. 1. 建表词句 CREATE TABLE [Chapter2].[Product]( [SKU] [int] primary key , ...

  3. 在EntityFramework(EF)中删除主从表记录

    删除主表:  如果要删除单个的Book对象,由于启用了级联删除,干掉一个Book,它所关联的所有BookReview也一并删除了. (说的简单,如果用Attach方法或者Remove,加修改删除状态, ...

  4. EF Code First MySql 主从表设计的一些需要注意的内容

    假如有下面两张表 public class Main { public int Id{get;set;} public string Name{get;set}; public virtual ICo ...

  5. DevExpress主从表 按组分页一组不足一页为一页--以此记录

    本文的主要是说明Dev的报表的主从表,主从表的每一组显示在一页,当一组超出一页,第二页只显示第一组的. 一.每上报表设置图 简单设计图如上 二.后台代码 报表页代码 public partial cl ...

  6. Winform界面中主从表编辑界面的快速处理

    在Winform开发中,我们往往除了常规的单表信息录入外,有时候设计到多个主从表的数据显示.编辑等界面,单表的信息一般就是控件和对象实体一一对应,然后调用API保存即可,主从表就需要另外特殊处理,本随 ...

  7. RDIFramework.NET V3.3 WinForm版新增订单管理主从表事例

    功能描述 无论什么系统,除了常规的单表处理外,主从表的应用都是非常普遍的,RDIFramework.NET V3.3 WinForm版本中新增了一个主从表的事例供大家参考.主从表的界面设计大同小异,主 ...

  8. Asp.Net MVC +EntityFramework主从表新增编辑操作的实现(删除操作怎么实现?)

    Asp.Net MVC +EntityFramework主从表新增编辑操作的实现 对于MVC中同时对主从表的表单操作在网上现有的解决很少,而这样的操作在做业务系统中是经常为遇到的.我在网上搜索了很久都 ...

  9. EF里单个实体的增查改删以及主从表关联数据的各种增删 改查

    本文目录 EF对单个实体的增查改删 增加单个实体 查询单个实体 修改单个实体 删除单个实体 EF里主从表关联数据的各种增删改查 增加(增加从表数据.增加主从表数据) 查询(根据主表找从表数据.根据从表 ...

随机推荐

  1. flume分布式日志收集系统操作

    1.flume是分布式的日志收集系统,把收集来的数据传送到目的地去. 2.flume里面有个核心概念,叫做agent.agent是一个java进程,运行在日志收集节点. 3.agent里面包含3个核心 ...

  2. Python 自用代码(拆分txt文件)

    现有一个28G的txt文件,里面每一行是一个分词过的专利全文文档,一共370多万行.我需要把它按每五万行为单位做成一个json文件,格式大致如下: [{"id":"100 ...

  3. HTTP——代理协议 HTTP/1.1的CONNECT方法

    我们平时使用HTTP协议无非就是GET.POST这些方法,但是HTTP的内容远不止那些.今天就来说说HTTP代理使用的CONNECT.这个不是在网页开发上用的,如果没兴趣就跳过吧. APACHE只是作 ...

  4. taro + iview 实现跨平台开发(App,Wap,微信小程序)

    1.安装 (1)安装脚手架 npm install -g @tarojs/cli taro init myApp (2)H5端运行 npm run dev:h5 taro build --type h ...

  5. CSS/JavaScript hacks,browserhacks使用

    1.网址 http://browserhacks.com/ 2.使用 (1)JavaScript Hacks 浏览器js判断 (2)条件注释hack (3)Media Query Hacks 媒体查询 ...

  6. PgSql备份pg_dump与还原手记pg_restore(转)可以直接跳转至最后面的示例进行查看

    PgSql备份pg_dump与还原手记pg_restore(转) 可以直接跳转至最后面的示例进行查看 真没有想到,以前一直是PostgreSQL使用者,突然需要库移植又成了头一招了!原来它与mysql ...

  7. 设置客户端连接PostgreSQL不需要密码

    平常工作中,有时需要远端连接 PostgreSQL 数据库做些维护,例如远端备份等:如果备份脚本写在远端机器,备份的时候会弹出密码输入提示,那么脚本就不能后台执行,这里总结了几种不弹出密码输入提示的方 ...

  8. Jmeter-接口测试(二)

    接口测试我们前面已经讲过,此博不做重复,我们主要讲讲如何利用Jmeter做接口测试及参数化. 一.新建项目 1.运行Jmeter.bat打开Jmeter 2.添加线程组(测试计划->添加-> ...

  9. jQuery find() 搜索所有段落中的后代 C# find() 第一个匹配元素 Func 有返回值 Action是没有返回值 Predicate 只有一个参数且返回值为bool 表达式树Expression

    所有p后代span Id为 TotalProject 的 select 标签 的后代 option标签 为选中的 text using System; using System.Collections ...

  10. 自己动手制作更好用的markdown编辑器-01

    这里文章都是从个人的github博客直接复制过来的,排版可能有点乱. 原始地址  http://benq.im   文章目录 1. 简介 2. 项目结构 3. 程序主界面 4. 拖动窗口 5. app ...