C#博客随笔之八:EntityFramework初识

What is Entity Framework

Entity Framework (EF) is an object-relational mapper that enables .NET developers to work with relational data using domain-specific objects. It eliminates the need for most of the data-access code that developers usually need to write.

转自msdn    https://msdn.microsoft.com/en-us/data/ef.aspx?f=255&MSPPError=-2147217396

Entity Framework可以用来操作数据库

首先我们要从nuget获取EF

在控制台管理器中输入 Install-Package EntityFramework 即可安装最新版的EF

EF默认连接local db这里我们需要他支持mysql

首先我们需要从nuget获取Mysql.Data 和Mysql.Data.Entity

然后创建类

public class MysqlDbConfiguration : DbConfiguration
    {
        public MysqlDbConfiguration()
        {
            SetHistoryContext(
            "MySql.Data.MySqlClient", (conn, schema) => new MysqlHistoryContext(conn, schema));
        }

    }

  

 public class MysqlHistoryContext : HistoryContext
    {
        public MysqlHistoryContext(
          DbConnection existingConnection,
          string defaultSchema)
            : base(existingConnection, defaultSchema)
        {
        }

        protected override void OnModelCreating(DbModelBuilder modelBuilder)
        {

            base.OnModelCreating(modelBuilder);
            modelBuilder.Entity<HistoryRow>().Property(h => h.MigrationId).HasMaxLength(100).IsRequired();
            modelBuilder.Entity<HistoryRow>().Property(h => h.ContextKey).HasMaxLength(200).IsRequired();
        }
    }

  

public class ExtMySqlMigrationSqlGenerator : MySqlMigrationSqlGenerator
    {
        protected override System.Data.Entity.Migrations.Sql.MigrationStatement Generate(System.Data.Entity.Migrations.Model.AddForeignKeyOperation op)
        {
            if (op.Name.Length > 64)
                op.Name = "FK__" + op.Name.Substring(op.Name.Length - 60, 60);

            var ret = base.Generate(op);

            return ret;
        }
        protected override System.Data.Entity.Migrations.Sql.MigrationStatement Generate(System.Data.Entity.Migrations.Model.RenameTableOperation op)
        {
            var str = base.Generate(op);
            str.Sql = str.Sql.Replace("dbo.", "");
            return str;
        }
        protected override System.Data.Entity.Migrations.Sql.MigrationStatement Generate(System.Data.Entity.Migrations.Model.DropForeignKeyOperation op)
        {
            var str = base.Generate(op);
            str.Sql = str.Sql.Replace("dbo.", "");
            return str;
        }
        protected override System.Data.Entity.Migrations.Sql.MigrationStatement Generate(System.Data.Entity.Migrations.Model.DropPrimaryKeyOperation op)
        {
            var str = base.Generate(op);
            str.Sql = str.Sql.Replace("dbo.", "");
            return str;
        }
        protected override System.Data.Entity.Migrations.Sql.MigrationStatement Generate(System.Data.Entity.Migrations.Model.AddPrimaryKeyOperation op)
        {
            var str = base.Generate(op);
            str.Sql = str.Sql.Replace("dbo.", "");
            return str;
        }

    }

  这样,EF就可以支持mysql数据库了,因为微软的 SQL server实在是太臃肿了,所以我们选择了轻便的mysql。 这里我们使用的是MariaDb,是mysql的作者开发的开源数据库,跟mysql一毛一样,而且不用担心mysql被收购产生的其他影响。

EF是用来与数据库进行交互的,我们可以通过EF轻松的与数据库进行交互,而且在asp.net MVC的框架中,默认是安装EF的,可见EF还是比较受欢迎的,下一章将写怎么使用EF

活学活用,have fun。

么么么么哒

时间: 2024-08-29 05:31:10

C#博客随笔之八:EntityFramework初识的相关文章

博客随笔《文章目录》大纲

/**博客随笔<文章目录>大纲***/ /---------更新时间:2018-9-30 ------------/ /* *大纲分为三大部分,包括:前端开发技术.服务器开发技术.数据库开发技术 */ /-------------------------------------------------- 前端技术 ------------------------------------------------------------/ 一.html/css/html5/css3 html+cs

第一篇博客随笔

工作近一年,每天都有一个成为技术大牛的梦,可总是被各种琐事放下,来京一年多,计划三五年,已过近三分之一,可还是没有什么实质性的突破,仍然混在菜鸟的行列. 期望在预期完成前,可以达到自己的预期.距2018年结束,还剩下两个月时间,先给自己定下一个小目标. 1.每周至少保证1~2篇的博客随笔,不管好赖,有个记录,也方便自己日后在看. 2.坚持每天的英语.日语的学习,不要求过多,每天至少保证30分钟的外文阅读即可. 3.每周至少搞定一天文章.http://java-performance.info/

第一次博客随笔 吴为橦

写博客随笔的意义,其实就和记录美好生活差不多,想到什么写什么.关于Python这是上了大学以来学到的第四种计算机语言了.对于一个还没将之前的东西学透的人来说可以说是相当难学了. 废话不说,首先要知道Python才能够对于之后的学习更有帮助.Python是一种计算机程序设计语言.是一种动态的.面向对象的脚本语言,最初被设计用于编写自动化脚本(shell),随着版本的不断更新和语言新功能的添加,越来越多被用于独立的.大型项目的开发.它的发展历程可以说是很短了,在20世纪90年代的时候才创建出来模板.

博客园美化博客随笔目录

博客园美化博客随笔目录 基于孤傲苍狼在2014-5-11写的目录代码基础上进行改进 一.js代码 <!--目录--> <script type="text/javascript"> var BlogDirectory = { /* 获取元素位置,距浏览器左边界的距离(left)和距浏览器上边界的距离(top) */ getElementPosition:function (ele) { var topPosition = 0; var leftPosition

C#博客随笔之五:文件格式化输出

这篇博客主要是用到的知识点是将文件中的内容进行格式化输出 直接上图 左边是初始文件,右边是结果. 然后上程序界面 然后接下来上代码 private void button1_Click(object sender, EventArgs e) { //读取文件的对话框 OpenFileDialog fileDialog = new OpenFileDialog(); if (fileDialog.ShowDialog() == DialogResult.OK) { //如果点击确定的话,将文件完整

C#博客随笔之十:Problem Statement+System Glossary+System Supplementary Specification FOR每美欲下

似乎这是要求的最后一篇博客了,然而依然要好好写呢! MeiMeiYuXia Problem Statement Version 1.0 Revision History Date Issue Description Author 18/May/2015 1.0 Initial creation. Extracted the Problem Statement from the Vision document for purposes of scoping. Melody.Wang 24/May/

优秀博客随笔收录(持续更新...)

1 IT工具软件类 (1)最实用的IT类网站及工具大集合(PS:本文讲述了软件开发过程中大部分常用的工具及网站) (2)你必须收藏的Github技巧(PS:想学习在GitHub上搭建个人博客的同学可以看看) (3)Vmware Server 2.0.2 安装图文解说(比较详细)(PS:初步学习如何安装Linux虚拟机的同学可以看看) 待续...

C#博客随笔之七:反射初体验

这篇博客主要要讲的是反射在C#编程中的一些使用: 主要目的是为了让程序能动态识别插件并加载到主程序当中. 这个功能是一个实用的功能. 首先,我们需要定义一个接口 public interface IPlug { /// <summary> /// 获得版本号 /// </summary> /// <returns>返回版本</returns> string GetVersion(); /// <summary> /// 获得插件作者 /// &l

新博客随笔

今天刚开通博客,先说说开通博客的原因.因为一个月前辞去毕业后的第一份工作,有很多时间去思考自己未来的职业规划,所以想通过博客记录一下.另外一个原因是几天前到ucloud面试,深受打击,意识到自己有太多的不足.为了在未来能够让自己变得更优秀,开始去写技术博客也是我要做的第一步. 对大学至今五年时间里的自己先做一个总结.普通得不能再普通的本科院校,自动化专业,四年大学生涯留下更多应该是遗憾.第一,毕业以后和在一起四年的女朋友分手,这让我有一段时间浑浑噩噩,脑子里总想着我要怎么努力工作证明自己,也只是