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. CentOs 6语言改成中文

    1.在root权限下 切换到root下:su - root 查看当前语言环境:locale -a  (注意中间有空格) 如果看到 zh_CN.UTF-8(这个是中文简体)说明你的系统支持中文语言: 没 ...

  2. javascript常用工具类util.js

    //如果大家想要补充,请留言 /** * 判断指定名称的复选框是否被选中 * * @param {} * chname复选框名称 */ function chkCheckCha(chname) { v ...

  3. layui table 跨页记忆选择

    layui 表格功能目前默认不支持跨页记忆选择 下面来实现layui table跨页记忆选择实现 基于layui版本 1.4.5 表格跨页通用方法 //表格分页复选框 layui.define(['j ...

  4. 基于jQuery制作的手风琴折叠菜单

    初始化为全部隐藏 点第一个,显示第一个所隐藏的内容 当点第二个的时候,第一个的内容隐藏,第二个栏目的内容显示,以此类推 下面是代码部分 <!DOCTYPE html><html la ...

  5. antd 表单获取参数

    wrappedComponentRef是为了把form的值赋值到自定的对象中 <OpenCityForm wrappedComponentRef={(inst)=>{this.cityFo ...

  6. 2018-2019 ACM-ICPC, Asia Dhaka Regional Contest

    目录 Contest Info Solutions B. Counting Inversion C. Divisors of the Divisors of An Integer E. Helping ...

  7. UOJ450 【集训队作业2018】复读机【生成函数】

    题目链接:UOJ EI神仙加强版 既然这题模数是今天日期减去\(7\times 10^5\),那就要赶紧把这题做了. 首先肯定是考虑指数型生成函数,列出来之后使用单位根反演一波. \[\begin{a ...

  8. wepy小程序项目

    # 安装(更新) wepy 命令行工具. cnpm install wepy-cli -g # 安装依赖包 cnpm install # 开发实时编译. npm run dev WePY开发文档参考 ...

  9. FOI 冬令营 Day6

    目录 T1.堆(heap) 传送门 Code T2.密文(secret) 传送门 Code T3.树(tree) 传送门 Code 别问Day5到底去哪里了,咕咕咕 T1.堆(heap) 传送门 Co ...

  10. $.extend和$.fn.extend详解

    一.定义 $.extend()属于j全局的Query对象,用于将一个或多个对象合并到目标对象上: $.fn.extend()属于jQuery的原型对象,用于在jQuery原型上扩展实例属性和方法. 二 ...