ADO.NET Entity Framework 以 Entity Data Model (EDM) 为主,将数据逻辑层切分为三块,分别为 Conceptual Schema, Mapping Schema 与 Storage Schema 三层,其上还有 Entity Client,Object Context 以及 LINQ 可以使用。

一 、引入entityframework实体框架  

  新建项目后,这里我使用的是entityframework连接Mysql数据库:

项目右击 >> 管理Nuget包 >> 浏览中找到entityframework,下载   >>  找到MySQL.Data.Entity,下载

  entityframework包

  

  MySQL.Data.Entity包:

二 、添加实体模型Model  

  可以任意创建一个实体测试,其中id无论有用与否都应该默认添加,系统会用作主键,此处我不做设置,待生成数据后查看是否会生产主键。

using System;

namespace EFDemo.Model
{
public class person
{
public int id { get; set; }
public string name { get; set; }
public DateTime dateTime { get; set; }
}
}

三 、添加数据上下文DbContext  

using EFDemo.Model;
using MySql.Data.Entity;
using System.Data.Entity; namespace EFDemo
{
[DbConfigurationType(typeof(MySqlEFConfiguration))]
public class EntityDbContext : DbContext
{
public EntityDbContext() : base("name=MyStrConn")
{ } public DbSet<person> persons { get; set; }
}
}

  特别注意:1. [DbConfigurationType(typeof(MySqlEFConfiguration))]特性是指明此处是使用Mysql数据库,否则会默认找sqlserver数据库,这里需要引入using MySql.Data.Entity;名称空间

       2. base("name=MyStrConn")为默认的上下文DbContext传入连接字符串,从其重载重中可以看出一些端倪,链接字符串只支持这种格式即 “name=ConnectionString(配置节名)”的格式

  这里展示一下非name的错误:

四 、当使用mysql时的配置  

  当添加MySQL.Data.Entity后会默认生成配置App.config配置文件,在配置中加入mysql的链接字符串如下,并且节点名需要与三中的base("name=MyStrConn")名称一致。

<connectionStrings>
<add name="MyStrConn" providerName="System.Data.SqlClient" connectionString="Server=127.0.0.1;Database=eftest; User=root;Password=root;"/>
</connectionStrings>

  通过下面默认生成的配置中可以看到providers中增加了配置节点provider为mysql的配置。

<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
</configSections>
<connectionStrings>
<add name="MyStrConn" providerName="System.Data.SqlClient" connectionString="Server=127.0.0.1;Database=eftest; User=root;Password=root;"/>
</connectionStrings>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.1" />
</startup>
<entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
<parameters>
<parameter value="mssqllocaldb" />
</parameters>
</defaultConnectionFactory>
<providers>
<provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
<provider invariantName="MySql.Data.MySqlClient" type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.Entity.EF6, Version=6.10.8.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d">
</provider></providers>
</entityFramework>
</configuration>

五 、测试函数及结果  

  下面是插入一条数据:

namespace EFDemo
{
class Program
{
static void Main(string[] args)
{
EFDemo.Model.person p = new Model.person();
p.name = "测试成功";
p.dateTime = DateTime.Now;
using (EntityDbContext entity = new EntityDbContext())
{
entity.persons.Add(p);
entity.SaveChanges();
}
}
}
}

  数据库插入数据成功,并且将id设置为主键了:

  我的测试Demo: 欢迎点击下载    提取码:dt6d

.NET实体框架EF之CodeFirst的更多相关文章

  1. 实体框架 (EF) 入门 => 三、CodeFirst 支持的完整特性列表

    KeyAttribute 设置主键.如果为int类型,将自动设置为自增长列. 系统默认以Id或类名+Id作为主键.StringLengthAttribute 可设置最大最小长度以及验证提示信息等.最大 ...

  2. Entity Framework(实体框架 EF)

    什么是Entity Framework呢(下面简称EF)? EF(实体框架)是ADO.NET中的一组支持开发面向数据的软件应用程序的技术,是微软的一个ORM框架.ORM(对象关系映射框架):指的是面向 ...

  3. 实体框架 (EF) 入门 => 四、CodeFirst 枚举支持

    当使用 Code First 开发时,通常是从编写用来定义概念(域)模型的 .NET Framework 类开始. 插入记录没有为 Budget 赋值. 数值类型默认值为0,数据库中都为not nul ...

  4. 实体框架 (EF) 入门 => 一、我该用哪个工作流?

    入门的参考资料:http://msdn.microsoft.com/zh-cn/data/ee712907 本篇的参考资料:http://msdn.microsoft.com/zh-cn/data/j ...

  5. 实体框架 (EF) 入门 => 二、在全新的数据库中使用 Code First

    学习资料:http://msdn.microsoft.com/zh-cn/data/jj193542 视频建立的控制台应用程序,我在这里使用MVC. 一.非常有磁性的,非常优雅 很喜欢看这个人的视频, ...

  6. 实体框架 (EF) 入门 => 六、性能注意事项

    这个还真是复杂,看了看微软的文档,有些根本就看不懂,有些能看懂,但对我这种菜鸟也不会去用. 无从下手啊,前面放了几个链接,挨个试试吧. 一.显式打开连接 这个我测试过,有些时候,需要我们显示打开连接, ...

  7. 实体框架 (EF) 入门 => 五、连接和模型

    public class BloggingContext : DbContext  {  public BloggingContext()          : base("name=Blo ...

  8. 福利到!Rafy(原OEA)领域实体框架 2.22.2067 发布!

    距离“上次框架完整发布”已经过去了一年半了,应群中的朋友要求,决定在国庆放假之际,把最新的框架发布出来,并把帮助文档整理出来,这样可以方便大家快速上手.   发布内容 注意,本次发布,只包含 Rafy ...

  9. 领域实体框架Rafy2 发布了

    在2009年我在codeplex发布了1.0版本OpenExpressApp,下载地址:http://openexpressapp.codeplex.com/.OEA 1.0 作为我十多年开发工作的一 ...

随机推荐

  1. AJAX学习笔记——JSON

    JSON基本概念 1.JSON : JavaScript对象表示法( JavaScript Object Notation ) 2.JSON是存储和交换文本信息的语法,类似XML.它采用键值对的方式来 ...

  2. ARP详解

    1.学习ARP前要了解的内容 建立TCP连接与ARP的关系 应用接受用户提交的数据,触发TCP建立连接,TCP的第一个SYN报文通过connect函数到达IP层,IP层通过查询路由表: 如果目的IP和 ...

  3. 利用python中的库文件简单的展示mnist 中的数据图像

    import sys, os sys.path.append('F:\ml\DL\source-code') #导入此路径中 from dataset.mnist import load_mnist ...

  4. 学习路线 (转自 https://mp.weixin.qq.com/s/_FIGSda6wWL-5LXMQAk3IA )

  5. dede织梦调用顶级二级栏目及下三级栏目方法(数据库实现)

    上次有说道能调用织梦的二级栏目今天来说道说道调用三级,乃至无限极 ①:通过dede调用二级栏目大家都会调用,但要调用三级栏目,就有点麻烦了,如下样式的三级栏目dede如何调用呢?如下: ------- ...

  6. sql 存储过程set nocount on 的作用

    在存储过程中,经常用到SET NOCOUNT ON: 作用:阻止在结果集中返回显示受T-SQL语句或则usp影响的行计数信息.当SET ONCOUNT ON时候,不返回计数,当SET NOCOUNT ...

  7. 2019-2020 ICPC, NERC, Southern and Volga Russian Regional Contest

    目录 Contest Info Solutions A. Berstagram B. The Feast and the Bus C. Trip to Saint Petersburg E. The ...

  8. 对拍——>bat

    为了凸显对拍滴重要性.就拿来当置顶啦! ——本来是那样想的 ---------------------------------------------------------------------- ...

  9. [转]C++ 类中的static成员的初始化和特点

    在C++的类中有些成员变量初始化和一般数据类型的成员变量有所不同.以下测试编译环境为: ➜ g++ -v Using built-in specs. COLLECT_GCC=g++ Target: x ...

  10. SSD检测几个小细节

    目录 一. 抛砖引玉的Faster-RCNN 1.1 候选框的作用 1.2 下采样问题 二. SSD细节理解 2.1 六个LOSS 2.2 Anchor生成细节 2.3 Encode&& ...