Model First
Model First我们称之为“模型优先”,这里的模型指的是“ADO.NET Entity Framework Data Model”,此时你的应用并没有设计相关数据库,在Visual Studio中我们通过设计对于的数据模型来生成数据库和数据类。
首先创建一个控制台应用程序,右键添加新建项,选择“ADO.NET Entity Data Model”,名称输入EFDemoDB(此名称跟上一个没有任何联系,只是重名而已):
在模型设计视图中,添加新实体:(空白处右键)
添加,两个Scalar属性:“Customer”和“OrderDate(为datetime类型,可选中它在属性中修改)”;同样的方式添加第二个实体“OrderDetail”,并添加“Product”和“UnitPrice”属性:
接下来我们添加二者之间的关系,“Order”和“OrderDetail”是一对多的关系,“Order”可以通过“OrderDetails”属性访问“OrderDetail”实体,“OrderDetail”可以通过“Order”属性访问“Order”实体,并且添加了一个外键约束到“OrderDetail”中:
添加过关系后:
到目前为止Model First中的Model已经创建结束,下面就需要生成到数据库了,在模型设计视图空白处选择“从模型生成到数据库…”:(这里还是用的上面那个EFDemo数据库,可根据自己需求更改,新建连接更换数据库)
选择数据库连接,点击下一步,你将会看到生成的sql语句:
点击完成,不出意外的话将打开生成的脚本,当然你也可能会出现如下错误,请下载最新的SQL Server Data Tool(本地VS2012,数据库SQLServer2008R2出现了下面的提示,下载更新即可,建议直接下载镜像文件):
在模型保存后,生成了数据库上下文和实体类,并且打开了建表的脚本:
说明:如果没有,看看模型是否保存了(如下图)
打开的数据库脚本:
然后右键选择执行即可。
然后编码查询一下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.ComponentModel;
using System.Data;
using System.Text;
using System.Threading.Tasks; namespace EFDemo
{
class Program
{
static void Main(string[] args)
{
Order o = new Order() { Customer = "", OrderDate = DateTime.Now }; EFDemoDBContainer db = new EFDemoDBContainer();
db.Orders.Add(o);
int result = db.SaveChanges(); var orders = from od in db.Orders select od; foreach (Order order2 in orders)
{
Console.WriteLine("OrderID:{0},OrderDate:{1}", order2.Id, order2.OrderDate);
} Console.Read();
}
}
}
运行结果(正常情况下应该只有一行,这是我多次运行后的结果):
注意:如果我们的模型发生改变,只需要在模型设计视图修改模型,让后保存此时实体类就会相应改变,然后选择“从模型生成到数据库”重新执行生成的脚本即可。
本文大部分取自崔江涛(KenshinCui),写的博客
Entity Framework 5.0系列之EF概览
EF三种编程方式详细图文教程(C#+EF)之Model First的更多相关文章
-
EF三种编程方式详细图文教程(C#+EF)之Database First
Entity Framework4.1之前EF支持“Database First”和“Model First”编程方式,从EF4.1开始EF开始支持支持“Code First”编程方式,今天简单看一下 ...
-
EF三种编程方式详细图文教程(C#+EF)之Code First
Code First Code First模式我们称之为“代码优先”模式,是从EF4.1开始新建加入的功能.使用Code First模式进行EF开发时开发人员只需要编写对应的数据类(其实就是领域模型的 ...
-
EF三种编程方式图文详解
Entity Framework4.1之前EF支持“Database First”和“Model First”编程方式,从EF4.1开始EF开始支持支持“Code First”编程方式,今天简单看一下 ...
-
EF三种编程方式的区别Database first ,Model first ,code first
首先对于EF中先出现的datebase first和model first两种编程方式,其的区别根据字面意思很容易能够理解. datebase first就是代表数据库优先,那么前提就是先创建数据 ...
-
Entity Framework 5.0系列之EF概览-三种编程方式
概述 在开发面向数据的软件时我们常常为了解决业务问题实体.关系和逻辑构建模型而费尽心机,ORM的产生为我们提供了一种优雅的解决方案.ADO.NET Entity Framework是.NET开发中一种 ...
-
python_49_三种编程方式及面向过程与面向函数区别.py
''' 三种编程方式:1.面向对象 (类:class)2.面向过程 (过程:def)3.函数式编程(函数:def) 编程语言中函数的定义:函数是逻辑结构化和过程化的一种编程方法 过程与函数的区别,过程 ...
-
转 VMware虚拟机三种联网方式(图文详细解说)
原文地址https://blog.csdn.net/lucienduan/article/details/38233147 VMware三种网络模式联网 首先说一下VMware的几个虚拟设备 安装了V ...
-
Linux下rpm、yum和源码三种安装方式详细介绍
第1章 源码安装 源码包安装会比RPM包安装慢,是因为RPM的软件包是根据特定系统和平台而指定的,经常一种 程序会提供很多RPM包的格式,用户根据系统情况选择适合的RPM包直接安装,而源码包相当于 通 ...
-
java 多线程编程三种实现方式
一种是继承Thread类,一种是实现Runable接口,还有一种是实现callable接口: 有博主说只有前面2种方式,我个人愚见是三种,主要详细介绍下callable的使用: 三种线程的我的个人理解 ...
随机推荐
-
windows下如何安装和启动MySQL
1.下载,解压到自己喜欢的目录 2.配置环境变量.MYSQL_HOME,值为mysql的根目录:在path中添加%MYSQL_HOME%/bin目录. 3.向windows注册mysql服务.必须用管 ...
-
Flexbox,更优雅的布局
在设计的眼中,排版的操作是一件很简单的事情,靠左.置中.靠右,我只要点一下,所有元素,就会乖乖的到指定的位置. 但到了前端在排版的实现上,就不是这样了. 我们常常得用一堆其实本来不是这样用的属性来做 ...
-
预编译命令 #if DEBUG
在控制台程序根据预编译命令: http://www.askapache.com/windows/advanced-batch-scripting.html namespace SXGYCarTrans ...
-
Linux基本配置和管理 1---- Linux网络基本配置
1 IP编址 1 IP编址是一个双层的编址方案,一个IP编址标识一个主机(或一个网卡接口) 2 现在应用最为广泛的是ipv4,已经开始逐步香ipv6切换 3 ipv4地址为32位,ipv6为128位 ...
-
php函数搜集
数组去重: 方法1:php自带此功能的函数array_unique($arr) 方法2:$arr = array_flip(array_flip($arr)); //这样便可以删除重复元素. 比上面的 ...
-
Bank Interest
Bank Interest Time Limit : 2000/1000ms (Java/Other) Memory Limit : 131072/65536K (Java/Other) Tota ...
-
bzoj 5212: [Zjoi2018]历史
Description 九条可怜是一个热爱阅读的女孩子. 这段时间,她看了一本非常有趣的小说,这本小说的架空世界引起了她的兴趣. 这个世界有n个城市,这n个城市被恰好n?1条双向道路联通,即任意两个城 ...
-
mysql判断条件不存在插入存在更新某字段
insert into mst_sequence(seq_type, seq_desc, seq_date, seq_no, create_time) VALUES('CK', 'XXX', NOW( ...
-
session_id() , session_start(), $_SESSION[";userId";], header(";Location:homeLogin.php";); exit 如果没有登录, 就回登录页
if(!session_id()) session_start(); header("Content-type:text/html;charset=utf-8"); if (emp ...
-
将img设置成div背景图片
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...