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

最新文章

  1. logistic regression与SVM
  2. struts.xml 配置详解
  3. Selenium2Library系列 keywords 之 _SelectElementKeywords 之 get_selected_list_labels(self, locator)
  4. GridView中使用如下button OnClientClick代码会出现解析错误
  5. 原生Ajax + Promise
  6. Ajax七层模型用途
  7. Linux转发性能评估与优化-转发瓶颈分析与解决方式(补遗)
  8. Oauth1.0认证过程
  9. MVC Razor标签
  10. 个人作业3--个人总结(Alpha阶段)
  11. DaemonSet 案例分析 - 每天5分钟玩转 Docker 容器技术(130)
  12. CentOS 7 Nginx1.12.2平滑升级到新版本nginx-1.13.3
  13. day01 格式化输出和while循环的两个小练习
  14. ODAC(V9.5.15) 学习笔记(四)TCustomDADataSet(5)
  15. Go Example--Hello
  16. SimpleAdapter真不简单!
  17. testng入门教程10 TestNG参数化测试
  18. random内置模块
  19. DataGrid中的DataGridCheckBoxColumn用法 ..
  20. linux中无法使用sudo的方法

热门文章

  1. 机房重构——UML图最终版本
  2. 深入剖析TOMCAT
  3. 16Vue 表单的输入绑定
  4. docker学习(四)
  5. Python爬虫:BeautifulSoup用法总结
  6. React重置非受控组件state的方法
  7. mongodb mongod.lock文件及oplog文件
  8. 斐波那契数列 矩阵乘法优化DP
  9. Python中的各种排序问题
  10. ST表(模板)「 查询区间最值 」