【C#】EF学习<二> DbFirst (先创建数据库,表及其关联关系)
工程压缩文件放到百度云盘---20181019001文件夹
1. 创建表的脚本
- create table Teacher
- (
- TID char(12) primary key,
- Tname char(6) not null
- )
- create table Student
- (
- SID char(12) primary key,
- Sname char(6) not null,
- Sage INT not null,
- Ssex char(2) check(Ssex between ' 男' and '女')
- )
- create table Course
- (
- CID char(2) primary key,
- Cname char(6) not null,
- TID char(12) references Teacher(TID) ,
- )
- create table SC
- (
- SID char(12) references Student(SID),
- CID char(2) references Course(CID),
- Score int ,
- primary key(SID,CID)
- )
- --------------------------------
- Insert into Student values('201190609112','zzz',21,'男')
- Insert into Course values('01','数据库','111')
- Insert into SC values('201190609112','01',100)
- insert into Teacher values('111','刘培华')
- select * from Student;
- select * from Course;
- select * from SC;
- select * from Teacher;
- ---------------select查询----------------------
- select Tname,Cname
- From SC,Teacher,Course
- Where SC.CID = Course.CID and Course.TID=Teacher.TID and SC.SID='201190609112'
2. 添加ADO.NET实体数据模型
3.完成。。。。
创建实体数据模型:
本文将带你创建实体数据模型(EDM)SchoolDB数据库和理解基础建设模块。
实体数据模型(EDM)是用于描述实体之间关系的一种模型,以下将使用Visual Studio 2012 和 EF6创建SchoolDB数据库。
1.打开Visual Studio 2012并创建一个Console项目
项目->属性,确保target framework 为 .NET Framework 4.5。
2.增加EDM文件,右键项目 -> 添加 选中ADO.NET Entity Data 并命名为'School'
3.随后会出现EDM向导,有四个选项:EF Designer from database (数据库优先功能),Empty EF Designer model(模型优先功能),Empty Code First model 和 Code First from database(代码优先功能)。在本基础教程中暂时只关注数据库优先功能,所以选择EF Designer from database 选项,并且点击下一步。
4.你可以选择已经存在的数据库连接或者选择新建一个连接。我们选择已经存在的数据库连接SchoolDB数据库。这会将对应的连接字符串加入app.config文件,点击下一步。
5.这一步我们需要选择EF的版本,这里我们选择EF6.0
注意:如果你已经安装了EF的最新环境,这一步将不会出现。
6.这一步将显示SchoolDB数据库的所有表,视图和存储过程,选择你想要建模的表,视图,存储过程。并且如果需要的话,可以修改命名空间。
注意:
Pluralize or singularize generated object names 选项 表示所创建的对象属性会注意单复数形式。例如,如果SchoolDB数据库中有一个表名为Students的表,它创建出来的实体集合(如DBSet<T>)中的泛型参数(T)会以单数形式创建。又例如表间关系存在一对多或多对多关系的,如Student与Course之间的多对多关系,在Student实体对象中将存在一个复数形式的属性名“Courses”的集合对象。
第二个选项,Include foreign key columns in the model,将外键包含在模型中。例如Standard表和Student表存在一对多的关系,所以代表多个Student关联一个Standard。在实体模型中Student将包含StandardId 这个标量属性和Standard 这个导航属性,如果没有选中该项,则仅包含Standard 这个导航属性,不包含StandardId 这个标量属性。
第三个选项,Import selected stored procedures and functions into entity model,自动创建存储过程和函数,这个选项通常是必须要的。
7.当点击“Finish”键后,一个名为“School.edmx”的文件将出现在你的项目中。双击该文件将打开EDM设计器,它会显示所有你刚刚选择的表以及他们之间的关系。
EDM也会在config文件中为你添加好连接字符串
至此,你已经通过已有的数据库创建出一个简单的EDM模型了。
接下来我们将看看EDM (School.edmx)为我们创建了一些什么文件。
实体表映射:
每一个实体对象都被映射到对应的数据表中,你可以右键点击对应的实体对象并查看映射关系。当然,如果你在EDM设计器中修改了实体对象的属性名字,表映射也会自动应用该变化。
上下文及实体类:
每一个实体对象模型都会创建一个上下文类(Context Class)还有若干个你选中的表所对应的实体类在EDM中,展开School.edmx变能看见。
School.Context.tt:
这是T4模板文件产生出来的上下文类。你可以展开.edmx文件开到它,其中会创建默认名为{数据库名} + "Entities"的类。该类继承DBContext类(该类在EF在定义,EF5.0前为ObjectContext类)
School.tt:
这是T4模板产生出来的实体对象类,下面代码片段显示了Student实体对象
EDM Designer:
EDM设计器代表你的概念模型,它代表实体对象和他们之间的关系。起初,它看起来完全跟你的数据库表结构一样,但你可以从设计器中添加,合并和删除一些你的应用程序不需要的字段。你甚至可以在这个模型中添加一个来自不同数据库表的新对象到上下文菜单中,像上面一样。记住无论做了什么改动都应该将它映射至存储模型中。所以你做改动时必须小心。
你可以通过XML的方式打开EDM设计器,这样你将看到三部分,概念模式 (CSDL), 存储模式 (SSDL) 和 映射表 (MSL) ,这三部分都在XML中。
右键点击School.edmx,选择打开方式。
选择“XML (text) Editor”
Visual Studio 不能同时打开模型设计外观和XML编辑器,所以你会看到一个让你关闭模型设计外观的窗口。点击Yes将看到XML编辑器形式,然后你将看到以下界面。
你能看到SSDL, CSDL 和 C-S mapping 的内容,你可以展开这些内容进行浏览。你并不需要直接编写XML数据,因为你可以直接在模型中浏览编辑。
【C#】EF学习<二> DbFirst (先创建数据库,表及其关联关系)的更多相关文章
- 【转】 iOS学习之sqlite的创建数据库,表,插入查看数据
原文: http://blog.csdn.net/totogo2010/article/details/7702207 iOS sqlite数据库操作.步骤是: 先加入sqlite开发库libsql ...
- iOS学习之sqlite的创建数据库,表,插入查看数据
目录(?)[-] 新建项目sqliteDemo添加使用sqlite的库libsqlite3dylib sqlite 的方法 获取沙盒目录并创建或打开数据库 创建数据表 插入数据 查询数据库并打印数据 ...
- 基于CentOS的MySQL学习补充三--使用Shell批量创建数据库表
本文出处:http://blog.csdn.net/u012377333/article/details/47006087 接上篇介绍<基于CentOS的Mysql学习补充二--使用Shell创 ...
- 使用PowerDesigner创建数据库表图文并茂版
使用PowerDesigner创建数据库表图文并茂版 使用PowerDesigner 建数据库表. 一直很忙,没有时间写东西.这次搞点会声会色的,嘿嘿 此技能为项目经理必备技能. 本次主角: 1.在w ...
- django使用model创建数据库表使用的字段
Django通过model层不可以创建数据库,但可以创建数据库表,以下是创建表的字段以及表字段的参数.一.字段1.models.AutoField 自增列= int(11) 如果没有的话,默认会生成一 ...
- SQLAlchemy通过models创建数据库表
原地址:http://blog.csdn.net/jmilk/article/details/53184903 定义数据模型 models SQLAlchemy 允许我们根据数据库的表结构来创建数据模 ...
- Hibernate入门之创建数据库表
前言 Hibernate 5.1和更早版本至少需要Java 1.6和JDBC 4.0,Hibernate 5.2和更高版本至少需要Java 1.8和JDBC 4.2,从本节开始我们正式进入Hibern ...
- hibernate动态创建数据库表名几种方式
数据库中数据量很大, 但又不可以删除时同时又要优化程序检索数据时间. 答:方式有很多比如 创建数据库表分区,创建索引, 存储过程等; 我这里采用动态创建数据库表的方式. 完全可以在不创建表分区情况下实 ...
- 数据库(一)--通过django创建数据库表并填充数据
django是不能创建数据库的,只能够创建数据库表,因此,我们在连接数据库的时候要先建立一个数据库. 在models.py中 from django.db import models class Pu ...
随机推荐
- Phong光照模型的Shader实现
计算反射向量 Phong用到的是反射向量,计算反射向量的公式是 R = 2*N(dot(N, L)) - L 这个公式是根据向量的投影公式以及平行四边形法则推导出来的 详细步骤请看这篇文章,讲的非常好 ...
- ASP.NET 整理比较全的URL重写解决方案
经常有人请我指导应该如何动态地“重写”URL,以在他们的ASP.NETweb应用中发布比较干净的URL端点.这个博客帖子概述了几个方法,你可以用来在ASP.NET中干净地映射或重写URL,以及按照你自 ...
- hdu 4336 Card Collector —— Min-Max 容斥
题目:http://acm.hdu.edu.cn/showproblem.php?pid=4336 bzoj 4036 的简单版,Min-Max 容斥即可. 代码如下: #include<cst ...
- MySQL 5.7.10 自动备份、自动清理旧备份集(转)
1,mysqldump备份脚本 备份脚本为,里面有几个需要注意的参数: (1)--master-data=2 :这个参数可以在搭建从库的时候,记录当前备份的复制点信息. (2)--extended-i ...
- DBUtils使用BeanListHandler及BeanHandler时返回null
一.使用Bean相关方法时返回null 问题描述: 使用DBUtils查询数据,如果使用ArrayListHandler等都能够返回正确值,但使用BeanListHandler 和 BeanHandl ...
- 7-EasyNetQ之Request & Response
EasyNetQ也支持Request/Response这种方式的消息模式.这种方式很容易在client/Server应用中执行,客户端发送一个请求到服务器,服务器然后处理请求后返回一个响应.和传统的R ...
- 跨域Ajax原理以及浏览器同源策略
- centos7虚拟机桥接上网(DHCP)
centos设置成自动获取ip地址方式(DHCP) 1.打开终端查看网卡信息 #ifconfigifcfg-enp0s3lovirbro 2.编辑文件#vim /etc/sysconfig/netwo ...
- 【总结整理】天地图WMTS服务与卫星图匹配与坐标转换
http://blog.sina.com.cn/s/blog_60abbd570102wnhh.html
- 百度Apollo解析——3.common
1.略读 该目录下主要提供了各个模块公用的函数和class以及一些数学API还有公共的宏定义. 在Apollo 1.0中,common是整个框架的基础.configs是配置文件加载.adapters是 ...