【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数据,因为你可以直接在模型中浏览编辑。

分类: Entity Framework

原文地址:https://www.cnblogs.com/lixiaochong/p/9817459.html

时间: 2024-10-11 04:00:56

【C#】EF学习<二> DbFirst (先创建数据库,表及其关联关系)的相关文章

iOS学习之sqlite的创建数据库,表,插入查看数据

目录(?)[-] 新建项目sqliteDemo添加使用sqlite的库libsqlite3dylib sqlite 的方法 获取沙盒目录并创建或打开数据库 创建数据表 插入数据 查询数据库并打印数据 iOS sqlite数据库操作.步骤是: 先加入sqlite开发库libsqlite3.dylib, 新建或打开数据库, 创建数据表, 插入数据, 查询数据并打印 1.新建项目sqliteDemo,添加使用sqlite的库libsqlite3.dylib 2.sqlite 的方法 sqlite3  

【转】 iOS学习之sqlite的创建数据库,表,插入查看数据

原文:  http://blog.csdn.net/totogo2010/article/details/7702207 iOS sqlite数据库操作.步骤是: 先加入sqlite开发库libsqlite3.dylib, 新建或打开数据库, 创建数据表, 插入数据, 查询数据并打印 1.新建项目sqliteDemo,添加使用sqlite的库libsqlite3.dylib 2.sqlite 的方法 sqlite3          *db, 数据库句柄,跟文件句柄FILE很类似 sqlite3

基于CentOS的Mysql学习补充二--使用Shell创建数据库

文章出处:基于CentOS的Mysql学习补充二--使用Shell创建数据库 关于使用基于命令使用mysql数据库的方法可见文章<基于CentOS的Mysql的使用说明>,本文只要介绍如何使用Shell脚本来创建我们想要的数据库,下面给出我创建数据库的Shell脚本,基本也就是将mysql的一些命令放在shell脚本里面而已. #!/bin/bash #Author: chisj #Time: 2015.7.22 #Describe: Create Database #The username

基于CentOS的MySQL学习补充三--使用Shell批量创建数据库表

本文出处:http://blog.csdn.net/u012377333/article/details/47006087 接上篇介绍<基于CentOS的Mysql学习补充二--使用Shell创建数据库>,本文继续探索关于Shell和MySQL的结合使用,我不知道当一个数据库设计完成之后如何快速的创建设计好的数据库表和添加相应基本数据,我目前知道的就是使用Shell和SQL脚本来达到我的目的--快速的.多次的.可重复利用的创建数据库表. 创建一个数据库表的SQL脚本: /***********

sqlite学习笔记2:创建数据库

在上一次笔记中最后生成了一个sqlite可执行文件,cd到sqlite所在的目录下面执行: sqlite3 MyDataBase.db 就会创建了一个名叫MyDataBase.db的数据库,在当前路径下面就会生成一个叫MyDataBase.db的文件 #切记不是先运行sqlite3,然后再上述命令,而是在终端直接输入上述命令,否则会报错:Error: near "sqlite3": syntax error 然后运行命令: .databases 可以查看刚刚创建的数据库,退出数据库命令

使用sqlite3创建数据库表的时候需要注意

使用sqlite3创建数据库表的时候需要注意: 1. 不能使用纯数字 2. 不能带有"-","@"等字符.也不能以数字打头. 一.下面是log打出来的信息: DB Error: 1 "unrecognized token: "47464636265757265763393573649"" DB Query: INSERT INTO 47464636265757265763393573649(role,number,name)

使用sqlite3创建数据库表的时候须要注意

使用sqlite3创建数据库表的时候须要注意: 1. 不能使用纯数字 2. 不能带有"-","@"等字符.也不能以数字打头. 一.以下是log打出来的信息: DB Error: 1 "unrecognized token: "47464636265757265763393573649"" DB Query: INSERT INTO 47464636265757265763393573649(role,number,name)

django使用model创建数据库表使用的字段

Django通过model层不可以创建数据库,但可以创建数据库表,以下是创建表的字段以及表字段的参数.一.字段1.models.AutoField 自增列= int(11) 如果没有的话,默认会生成一个名称为 id 的列,如果要显示的自定义一个自增列,必须将给列设置为主键 primary_key=True.2.models.CharField 字符串字段 必须 max_length 参数3.models.BooleanField 布尔类型=tinyint(1) 不能为空,Blank=True4.

hibernate动态创建数据库表名几种方式

数据库中数据量很大, 但又不可以删除时同时又要优化程序检索数据时间. 答:方式有很多比如 创建数据库表分区,创建索引, 存储过程等; 我这里采用动态创建数据库表的方式. 完全可以在不创建表分区情况下实行分表管理 例如 日志记录表 将日期(yyyy-MM)作为默认表后缀动态追加, 例如 文章发布表 将用户名作为后缀名进行动态追加 ; 动态创建数据库表的方式要具体问题具体分析, 比如JDBC中直接使用create table 表名_dynamicStr(...); 文章发布系统 dynamicStr