博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Entity Framework 6 初体验
阅读量:5364 次
发布时间:2019-06-15

本文共 3662 字,大约阅读时间需要 12 分钟。

Entity Framework中有三种模式 Code First, Model First和Database First, Code First 是在EF4中新增的模式, 也跟NHibernate等ORM框架越来越接近了。

今天我们来做个 Code First 模式的 简单例子  

Code First 

  为了支持以设计为中心的开发流程,EF4 还更多地支持以代码为中心 (code-centric) ,我们称为代码优先的开发,代码优先的开发支持更加优美的开发流程,它允许你:

在不使用设计器或者定义一个 XML 映射文件的情况下进行开发。

  ·允许编写简单的模型对象POCO (plain old classes),而不需要基类。

  ·通过"约定优于配置",使得数据库持久层不需要任何的配置

  ·也可以覆盖"约定优于配置",通过流畅的 API 来完全定制持层的映射。

  Code First是基于Entity Framework的新的开发模式,原先只有Database First和Model First两种。Code First顾名思义,就是先用C#/VB.NET的类定义好你的领域模型,然后用这些类映射到现有的数据库或者产生新的数据库结构。Code First同样支持通过Data Annotations或fluent API进行定制化配置

 

Database First

  是最老也是应用得最广泛的一种设计方式。如上文提到过的那样,Database First这种方式的设计高度依赖于数据库中表的结构,根据表及表间的关系来创建模型。如果后期需求有所变更或者功能有很大变化的话,需要涉及到更改数据库所付出的代价将会很大,因为之前编写好的代码将不再适用于新的表,我们必需重构以更改代码中的逻辑以适应更改之后的表。

  

Model First

  是创建ADO.NET实体对象以及它们之间的关系,然后再指定到数据库的映射。这个实体对象即为Model。

 

首先在GuGet程序包管理器中 下载安装 EF

 

1.新建表数据模型

using System;using System.Collections.Generic;using System.Linq;using System.Text; using System.ComponentModel.DataAnnotations;using System.ComponentModel.DataAnnotations.Schema;using System.Data.Entity;namespace EFSample.Model{    [Table("T_Car")]    public class Car      {         [Key]        [DatabaseGenerated(DatabaseGeneratedOption.Identity)]        public int CarId        { get; set; }        [StringLength(50)]        [Column("Brand")]        public string Brand        { get; set; }        [StringLength(50)]        [Column("CarModel")]        public string CarModel        { get; set; }        [StringLength(50)]        [Column("Color")]        public string Color        { get; set; }        [Column("Price")]        public decimal Price        { get; set; }             }}

2. 数据生成器

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Data.Entity;using System.Data.Entity.ModelConfiguration.Conventions;using EFSample.Model;namespace EFSample.DAL{    ///     /// DbContext 数据生成器    ///     public class CarContext : DbContext    {        public CarContext() : base("MyConn") { }        public DbSet
CarSet { set; get; } protected override void OnModelCreating(DbModelBuilder modelBuilder) { modelBuilder.Conventions.Remove
(); } }}

3.新建一个控制台应用程序 来操作数据

using System;using System.Collections.Generic;using System.Linq;using System.Text;using EFSample.DAL;using EFSample.Model;namespace EFSample.Demo{    class Program    {        static void Main(string[] args)        {            using (var db = new CarContext())            {                //直接执行Sql语句                db.Database.ExecuteSqlCommand("delete from T_Car");                var car =                    new Car { Brand = "宝马", CarModel = "Z4", Color = "白色", Price = 200 };                //批量添加记录                db.CarSet.Add(car);                //提交到db                db.SaveChanges();                                //查询                var query = db.CarSet.Where(c => c.Brand == "宝马").AsQueryable();                //输出Sql语句                Console.WriteLine(query.ToString());                List
orderEntities = query.ToList(); foreach (var order in orderEntities) { Console.WriteLine(String.Format("ID:{0}/CustomerName:{1}/Amount:{2}/ItemCount:{3}", order.CarId, order.Brand, order.CarModel, 0)); } } Console.WriteLine("ok!"); Console.Read(); } }}

4.配置文件App.config

 

 

结果展示

 

 

 

 

 

 

 

 

转载于:https://www.cnblogs.com/dragon-L/p/4616449.html

你可能感兴趣的文章
【RL-TCPnet网络教程】第38章 TFTP简单文件传输基础知识
查看>>
HDU- 2265 Encoding The Diary
查看>>
socket基本概念
查看>>
[第三方]SCNetworkReachability 获取网络状态控件使用方法
查看>>
在Windows上使用putty连接一台Linux主机
查看>>
Socket常见错误
查看>>
百度地图2.0API和3.0API。你想要的百度地图的这都有
查看>>
专业词汇
查看>>
星期五的收获
查看>>
proxmox 去除订阅提示
查看>>
使用Html.EditorFor()为文本框加上maxlength,placeholder等属性
查看>>
[转]后缀数组求最长重复子串
查看>>
设计模式——外观模式详解
查看>>
MVC3 控件
查看>>
mysql (一)
查看>>
photoshop图层样式初识1
查看>>
Open Project' has encountered a problem
查看>>
【.NET】使用HtmlAgilityPack抓取网页数据
查看>>
Topcoder SRM583 DIV 2 250
查看>>
typedef的使用
查看>>