Entity Framework之Code First

EF(Entity Framework
)是微软以 ADO.NET 为基础所发展出来的对象关系对应 (O/R Mapping
(对象关系映射(Object RelationalMapping,简称ORM)是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术。)) 解决方案。

Entity Framework利用了抽象化数据结构的方式,将每个数据库对象都转换成应用程序对象 (entity),而数据字段都转换为属性 (property),关系则转换为结合属性(association),让数据库的 E/R 模型完全的转成对象模型。它有三种生成模式,分别为Database First、Model First、CodeFirst,那么今天我们就来实现Code First。所谓Code First就是说用代码来直接去创建数据库并进行EF映射。

首先我们先来添加两个实体类,代码如下:

订单类

public  class OrderInfo
    {
       [Key]
       public int Id { get; set; }

       public string Content { get; set; }

       /// <summary>
       /// 外键
       /// </summary>
       public int CustomerId { get; set; }

       public Customer Customer { get; set; }
    }

客户类

public class Customer
    {
       [Key]
       public int Id {get;set;}

       public string CusName { get; set; }

       public virtualICollection<OrderInfo> Order { get; set; }
    }

这里的[Key]是标识符的意思,也就是设定主键,这里要添加引用System.ComponentModel.DataAnnotations

接下来我们就自定义一个数据库上下文

public classHotelDbContext:DbContext
    {
       public HotelDbContext()
           :base("name=ConnCodeFirst")
        { }
        public DbSet<Customer> Customer {get; set; }

        public DbSet<OrderInfo> OrderInfo{ get; set; }
    }

要能继承DbContext类,就要添加System.Data.Entity,即引用在我们程序目录下的packages\EntityFramework.5.0.0\lib\net40\EntityFramework.dll

下面来写下配置文件

<?xmlversion="1.0" encoding="utf-8" ?>
<configuration>
  <connectionStrings>
    <add name="ConnCodeFirst"connectionString="server=.;uid=sa;pwd=1;database=CodeFirstDemoDb"providerName="System.Data.SqlClient"/>
  </connectionStrings>
</configuration>

要注意的是我们命名的字符串变量一定要和数据库上下文类中的变量名一致。

客户端程序

class Program
    {
        static void Main(string[] args)
        {
            HotelDbContext dbcontext = newHotelDbContext();
           dbcontext.Database.CreateIfNotExists();//如果数据库不存在,创建数据库
        }
    }

执行,看看你的数据库中有没有添加成功吧!

后记

学习EF从代码构建来实践会有更加不一样的体会,逻辑也更清晰了一些,三种构建方法我们都应该去实践一下,这样才能学好EF。

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-12-23 13:50:54

Entity Framework之Code First的相关文章

创建ASP.NET Core MVC应用程序(3)-基于Entity Framework Core(Code First)创建MySQL数据库表

创建ASP.NET Core MVC应用程序(3)-基于Entity Framework Core(Code First)创建MySQL数据库表 创建数据模型类(POCO类) 在Models文件夹下添加一个User类: namespace MyFirstApp.Models { public class User { public int ID { get; set; } public string Name { get; set; } public string Email { get; se

1.Relationship in Entity Framework Using Code First Approach With Fluent API【使用EF Code-First方式和Fluent API来探讨EF中的关系】

In this article, you will learn about relationships in Entity Framework using the Code First Approach with Fluent API. 在这篇文章中,你将会学习到使用EF Code-First方式和Fluent API来探讨EF中的关系(一对一,一对多,多对多). Introduction[介绍] A relationship, in the context of databases, is a

MVC2、MVC3、MVC4、MVC5之间的区别 以及Entity Framework 6 Code First using MVC 5官方介绍教程

现在MVC的技术日趋成熟,面对着不同版本的MVC大家不免有所迷惑 -- 它们之间有什么不同呢?下面我把我搜集的信息汇总一下,以便大家能更好的认识不同版本MVC的功能,也便于自己查阅. View Engine : View Engine is responsible for rendering of the HTML code from your views to the browser.MVC 2 uses only Web Forms view engine (.aspx) as a defa

使用Entity Framework Core Code First创建SQLite数据库

Entity Framework Core(以下简称"EF Core")支持多种数据库.在这篇文章中,我们看看如何使用EF Core的Code First方式创建SQLite数据库 下载SQLite,解压后会得到三个文件,放到c:\sqlite目录下 我们先创建一个.NET Core控制台程序 添加EF Core for SQLite组件库 "dependencies": { "Microsoft.EntityFrameworkCore.Sqlite&qu

[C#/.NET]Entity Framework(EF) Code First 多对多关系的实体增,删,改,查操作全程详细示例

本文我们来学习一下在Entity Framework中使用Context删除多对多关系的实体是如何来实现的.我们将以一个具体的控制台小实例来了解和学习整个实现Entity Framework 多对多关系的实体删除的操作过程. 你将学习到 怎样创建一个引用Entity Framework的项目: 怎样配置Entity Framework的数据库连接: 怎样去掉Entity Framework Code First 生成的表名的复数: 怎样通过EntityTypeConfiguartion配置实体的

Entity Framework mvc Code First data migration

1. Code First 可以先在代码里写好数据模型,自动生成DB.下一次启动的时候会根据__MigrationHistory判断 数据库是否和模型一致. 详情参考:http://blogs.msdn.com/b/adonet/archive/2012/02/09/ef-4-3-code-based-migrations-walkthrough.aspx 如果想改变数据库的某个字段,而又不想重新生成一遍数据库的话.请按照以下操作做: Package Manager console: enabl

Entity Framework 6 Code First创建

基本上我是DB先设计好的,所以就按现存在的table去写程式. 1.Web.config里配置Db连接字串,Connection String Name为DefaultConnection <connectionStrings> <!--<add name="DefaultConnection" connectionString="Data Source=(LocalDb)\v11.0;AttachDbFilename=|DataDirectory|\

Entity Framework 6 Code First 系列:无需修改实体和配置-在MySql中使用和SqlServer一致的并发控制

无需修改实体和配置,在MySql中使用和SqlServer一致的并发控制.修改RowVersion类型不可取,修改为Timestamp更不可行.Sql Server的RowVersion生成一串唯一的二进制保证Row的版本,无关TimeStamp,更无论TimeStamp的精度问题.使用MySql触发器只能解决uuid的插入的默认值和更新的随机值,由于MySql的自身为了防止无限递归的策略,它的触发器无法在当前表的触发器中更新当前表,所以触发器无法实现更新在SqlServer中由数据库生成的Ro

Entity Framework之Code First开发方式

一.Code First Code First方式只需要代码,不需要Edmx模型.EF通过实体类型结构推断生成SQL并创建数据库中的表.开发人员只需要编写实体类就可以进行EF数据库的开发. Code First 有两种配置数据库映射的方式,一种是使用数据属性DataAnnotation,另外一种是使用Fluent API. DataAnnotation的配置方式需要给实体类和类中的属性加上与数据库映射相关的配置标签.常见配置标签如下: [Key]------主键,[Required]------