Creating a Model from an Existing Database

一、创建数据库 Chapter2

USE master
GO CREATE DATABASE Chapter2
GO
USE Chapter2
GO CREATE TABLE [Meter]
(
[MeterId] [int] NOT NULL IDENTITY(1, 1),
[MeterName] [varchar] (30) COLLATE Chinese_PRC_CI_AS NOT NULL
) ON [PRIMARY]
GO
ALTER TABLE [Meter] ADD CONSTRAINT [PK_Meter] PRIMARY KEY CLUSTERED ([MeterId]) ON [PRIMARY]
GO CREATE TABLE [Poet]
(
[PoetId] [int] NOT NULL IDENTITY(1, 1),
[FirstName] [varchar] (50) COLLATE Chinese_PRC_CI_AS NOT NULL,
[MiddleName] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL,
[LastName] [varchar] (50) COLLATE Chinese_PRC_CI_AS NOT NULL
) ON [PRIMARY]
GO
ALTER TABLE [Poet] ADD CONSTRAINT [PK_Poet] PRIMARY KEY CLUSTERED ([PoetId]) ON [PRIMARY]
GO CREATE TABLE [Poem]
(
[PoemId] [int] NOT NULL IDENTITY(1, 1),
[PoetId] [int] NOT NULL,
[Title] [varchar] (255) COLLATE Chinese_PRC_CI_AS NOT NULL,
[MeterId] [int] NOT NULL
) ON [PRIMARY]
GO
ALTER TABLE [Poem] ADD CONSTRAINT [PK_Poem] PRIMARY KEY CLUSTERED ([PoemId]) ON [PRIMARY]
GO
ALTER TABLE [Poem] ADD CONSTRAINT [FK_Poem_Meter] FOREIGN KEY ([MeterId]) REFERENCES [Meter] ([MeterId])
GO
ALTER TABLE [Poem] ADD CONSTRAINT [FK_Poem_Poet] FOREIGN KEY ([PoetId]) REFERENCES [Poet] ([PoetId])
GO

二、创建项目 CreateModelFromExistingDatabase

三、更新 Entity Framework 到最新版本

四、添加模型文件

完成后,得到如下图模型视图:

重新编译一下项目。

下面我们利用上面建立的模型对数据库进行操作,代码如下:

 1 using System;
2 using System.Collections.Generic;
3 using System.Linq;
4 using System.Text;
5 using System.Threading.Tasks;
6
7 namespace CreateModelFromExistingDatabase
8 {
9 class Program
10 {
11 static void Main(string[] args)
12 {
13 //添加数据
14 using (var context = new Chapter2Entities())
15 {
16 var poet = new Poet { FirstName = "John", LastName = "Milton" };
17 var poem = new Poem { Title = "Paradise Lost" };
18 var meter = new Meter { MeterName = "Iambic Pentameter" };
19 poem.Meter = meter;
20 poem.Poet = poet;
21 context.Poems.Add(poem);
22 poem = new Poem { Title = "Paradise Regained" };
23 poem.Meter = meter;
24 poem.Poet = poet;
25 context.Poems.Add(poem);
26
27 poet = new Poet { FirstName = "Lewis", LastName = "Carroll" };
28 poem = new Poem { Title = "The Hunting of the Shark" };
29 meter = new Meter { MeterName = "Anapestic Tetrameter" };
30 poem.Meter = meter;
31 poem.Poet = poet;
32 context.Poems.Add(poem);
33
34 poet = new Poet { FirstName = "Lord", LastName = "Byron" };
35 poem = new Poem { Title = "Don Juan" };
36 poem.Meter = meter;
37 poem.Poet = poet;
38 context.Poems.Add(poem);
39
40 context.SaveChanges();
41 }
42 //显示数据
43 using (var context = new Chapter2Entities())
44 {
45 var poets = context.Poets;
46 foreach (var poet in poets)
47 {
48 Console.WriteLine("{0} {1}", poet.FirstName, poet.LastName);
49 foreach (var poem in poet.Poems)
50 {
51 Console.WriteLine("\t{0} ({1})", poem.Title, poem.Meter.MeterName);
52 }
53 }
54 }
55 Console.ReadKey();
56 }
57 }
58 }

显示结果:

在到数据库里看一下3个表情况。

Entity Framework 6.x - 创建模型来自于现有数据库的更多相关文章

  1. MVC5 Entity Framework学习之创建复杂的数据模型

    目录(?)[-] 使用属性来自定义数据模型 DataType属性 StringLength属性 Column 属性 完成对Student实体的更改 Required 属性 Display 属性 Ful ...

  2. Entity Framework:如果允许模型处于非法状态,在某些场景下,记得清空DbContext

    Entity Framework:如果允许模型处于非法状态,在某些场景下,记得清空DbContext 背景 之前写过两篇文章介绍模型的合法性: DDD:关于模型的合法性,Entity.IsValid( ...

  3. Entity Framework 学习笔记(一)之数据模型 数据库

    关于Entity Framework  数据模型 的开发有三种模式:1.引用数据库方式:2.在VS中新建EF空模型Model 方式:3.Code 方式 Entity Framework  数据模型   ...

  4. Entity Framework应用:使用Code First模式管理数据库创建和填充种子数据

    一.管理数据库连接 1.使用配置文件管理连接之约定 在数据库上下文类中,如果我们只继承了无参数的DbContext,并且在配置文件中创建了和数据库上下文类同名的连接字符串,那么EF会使用该连接字符串自 ...

  5. Entity FrameWork 中使用Expression<Func<T,true>>访问数据库性能优化

    问题的本质是:扩展的Where方法有四个参数重载.传进去Func<T,true>那么返回值是IEnumable的接口类型的集合,如果是Expression<Func<T,tru ...

  6. ASP.NET关于书籍详情和删除的Demo(HttpHandler进行页面静态化[自动生成html网页]+Entity Framework通过类创建数据库+EF删查)

    这次的Demo如标题所示, 首先第一步EF创建数据库 创建两个类,一个是图书类,一个是图书类别的类 using System; using System.Collections.Generic; us ...

  7. Entity Framework 7 动态 DbContext 模型缓存 ModelCaching

    EF7里实例化DbContext变的有点麻烦了, 下面这个基类会有所帮助: public abstract class BaseDbContext : DbContext { private stri ...

  8. Asp.Net MVC 模型(使用Entity Framework创建模型类) - Part.1

    这篇教程的目的是解释在创建ASP.NET MVC应用程序时,如何使用Microsoft Entity Framework来创建数据访问类.这篇教程假设你事先对Microsoft Entity Fram ...

  9. Asp.Net MVC 模型(使用Entity Framework创建模型类)

    这篇教程的目的是解释在创建ASP.NET MVC应用程序时,如何使用Microsoft Entity Framework来创建数据访问类.这篇教程假设你事先对Microsoft Entity Fram ...

随机推荐

  1. Shell编程-10-Shell中的数组

    目录 数组基础 数组示例 数组总结     如果大家有其他语言的基础或经验,就很快能明白数组了.简单来说,数组就某一种相同类型的元素组合,而后通过下标对其进行访问各元素. 数组基础 基础语法 第一种形 ...

  2. Java的String类

    String类 String是引用数据类型:字符串是String类的对象 String类的构造方法 共有13种重载方式,这里只示例常用的几个 String():创建一个空字符串 String(Stri ...

  3. floyd算法之最小环问题

    最小环问题:都比较容易得到从u 到 v 经过中间某一些结点的最短路,但是我们得确保回来的时候,不能经过那些结点,这样我们就需要改一下floyd算法了 进而我们想到用Floyd算法.我们知道,Floyd ...

  4. hive 函数 current_date()

    current_date() 获取当天时间 select current_date() 结果是  实际操作中,这种写法只能获取日期是今天的数据,不适合数据重跑. 更合适的写法是 ,将日期作为外部参数传 ...

  5. B - Avoiding a disaster

    Description Percy likes to be punctual. So much so that he always keeps three watches with him, so t ...

  6. Azure DevOps Server (TFS)中代码文件换行问题解决方案(Git)

    之前写过一篇博客"探索TFS Git 库文件换行(CRLF)的处理方式",主要是针对TFVC代码库的. 下面这篇文章说明如何在TFS的Git库中处理代码换行的问题. 概述 在Azu ...

  7. .NET MVC 学习笔记(七)— 控制input控件

    .NET MVC 学习笔记(七)— 控制input控件 画面中有时候需要输入数字,这时就需要控制input的输入.以下为保留两位有效数字. /* * 初始化数字输入 */ function initD ...

  8. 28_网络编程-TCP/UDP

    一.传输层       1.定义       IP首部有一个协议字段,用来标识网络层(IP)的上一层所采用的是哪一种传输层协议.根据这个字段的协议号,就可以识别IP传输的数据部分究竟是TCP的内容还是 ...

  9. SQL简介及MySQL的安装目录详解

    一,SQL简介 1,数据库定义语言(DDL) ①create:用于创建数据库.表.索引.视图等: ②alter:用于修改数据库.表.索引.视图等: ③drop:用于删除数据库.表.索引.视图.用户等. ...

  10. Docker三剑客之常用命令

    一.docker-machine 命令 说明 docker-machine create 创建一个 Docker 主机(常用-d virtualbox) docker-machine ls 查看所有的 ...