我也来说说Entity Frame Work 4中的数据库优先和代码优先两种方式(1)

简介: 在 Entity Frame Work (后面直接简称其为EF) 中,支持两种方式创建,一种是数据库优先,另外一种是代码优先; EF是微软推出的一个ORM框架,而在这之前,Java早就有非常成熟的ORM框架了,比如Hibernate(当然,人家也有.NET版本的,叫NHibernate,多了个N),我这次只谈EF,NHibernate下次有时间再讲;   先讲数据库优先吧,数据库优先指的是先创建数据库,包括表和字段的建立,然后根据数据库生成ORM的代码,它是先创建数据库,再创建相关程序代码; 下面,我来看看如何具体操作。

在 Entity Frame Work (后面直接简称其为EF) 中,支持两种方式创建,一种是数据库优先,另外一种是代码优先;

EF是微软推出的一个ORM框架,而在这之前,Java早就有非常成熟的ORM框架了,比如Hibernate(当然,人家也有.NET版本的,叫NHibernate,多了个N),我这次只谈EF,NHibernate下次有时间再讲;

 

先讲数据库优先吧,数据库优先指的是先创建数据库,包括表和字段的建立,然后根据数据库生成ORM的代码,它是先创建数据库,再创建相关程序代码;

下面,我来看看如何具体操作。

首先,我们在一个数据库中创建一个数据库,和一些表,如下图:

 

新建一个“Asp.NET MVC 2 空 Web 应用程序”,项目名称为“RoRoWoDataFirst”,如下图:

 

创建项目后,VS2010会根据MVC 2,自动创建好一个目录结构和基本的文件资源,如下图:

 

现在我们为这个项目创建一个数据库优先的ORM模型,在项目中点鼠标右键,进入“添加”-->“新建项”,在弹出的对话框中选择“数据”,然后创建一个“ADO.NET 实体数据模型”,如下图:

它会默认创建一个Model1.edmx的文件,然后进入下一步,会让你选择是从数据库生成还是从概念设计模型中生成,这里我们选择数据库生成,(注:概念设计模型是在VS2010中使用工具箱设计出来的,是我们后面要讲的代码优先方式),我们点击下一步,然后会让我们选择数据库连接,如果还没有建过数据库连接,旁边会有个新建连接,点击按钮,新建一个就可以了,这里我的连接信息如下图:

 

 选择在连接字符串中包含敏感数据。

 勾选要生成的表和视图。

创建成功后的实体对象模型图。

 

创建好了,我们如何使用呢,我们创建一个Default控制器,然后代码如下:

 

img_405b18b4b6584ae338e0f6ecaf736533.gif 代码
using  System;
using  System.Collections.Generic;
using  System.Linq;
using  System.Web;
using  System.Web.Mvc;

using  RoRoWoDataFirst.Models;

namespace  RoRoWoDataFirst.Controllers
{
    
public   class  DefaultController : Controller
    {
        
//
        
//  GET: /Default/

        
public  ActionResult Index()
        {
            
// 使用ORM实体框架的上下文对象
            RoRoWoDBEntities context  =   new  RoRoWoDBEntities();
            
            BlogCategory model 
=  new  BlogCategory();
            model.CateName
= " 第一个分类 " ;
            model.CreateTime
= DateTime.Now;
            
            
// 新增一个分类到数据库
            context.AddToBlogCategory(model);
            context.SaveChanges();
            
            
return  View();
        }

    }
}

 

 是不是感觉非常方便,非常强大呢?用过Hibernate的朋友,是不是觉得非常容易上手呢?

下一次,我将谈谈如何代码优先的方式创建一个ORM。

 

 

 

 

目录
相关文章
避免list的并发修改异常的几种方式
避免list的并发修改异常的几种方式
|
Swift 编译器
Swift - 实例对象调用协议方法优先级分析/ witness_methos witness_table分析
本文主要探究: 当一个类遵循了协议,且协议和类都有方法实现时,实例对象调用方法的优先顺序
Swift - 实例对象调用协议方法优先级分析/ witness_methos witness_table分析
SAP QM 执行事务代码QS23为检验特性分配Selected Set的时候报错 - You cannot use entries from catalogs 1 and 3-
SAP QM 执行事务代码QS23为检验特性分配Selected Set的时候报错 - You cannot use entries from catalogs 1 and 3-
SAP QM 执行事务代码QS23为检验特性分配Selected Set的时候报错 - You cannot use entries from catalogs 1 and 3-
|
关系型数据库 MySQL Java
dbvis 数据库连接工具-更新数据库驱动方法示例演示,驱动与数据库版本不匹配问题:Unknown system variable ‘query_cache_size‘解决方法
dbvis 数据库连接工具-更新数据库驱动方法示例演示,驱动与数据库版本不匹配问题:Unknown system variable ‘query_cache_size‘解决方法
462 0
dbvis 数据库连接工具-更新数据库驱动方法示例演示,驱动与数据库版本不匹配问题:Unknown system variable ‘query_cache_size‘解决方法
HANA report里默认filter的工作机制
HANA report里默认filter的工作机制
83 0
HANA report里默认filter的工作机制
判断ABAP代码是否处于update模式下运行的工具类
判断ABAP代码是否处于update模式下运行的工具类
117 0
判断ABAP代码是否处于update模式下运行的工具类
|
NoSQL
随笔:sending data状态包含了使用内部临时表
这是一个我的随笔记录,这些过程非常有用,也非常明显。 欢迎关注我的《深入理解MySQL主从原理 32讲 》,如下: 语句如下: mysql> desc select id,count(*) from t110 group by id; +----+-------------+-------+...
867 0
|
关系型数据库 PostgreSQL
PostgreSQL 自定义复合类型(composite type) deform引入的额外开销
标签 PostgreSQL , UDT , 自定义类型 背景 PG 允许用户自定义复合类型,自定义复合类型由多个类型组成,使用时会引入一些deform的开销。 例子 postgres=# create unlogged table t(id int, c1 tp1, c2 int); C...
2266 0
|
Oracle 关系型数据库 数据库