zoukankan      html  css  js  c++  java
  • 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。

    么么么么哒

  • 相关阅读:
    基于GDAL库,读取.grd文件(以海洋地形数据为例)Java版
    基于GDAL库,读取.nc文件(以海洋表温数据为例)C++版
    基于UDP传输协议局域网文件接收软件设计 Java版
    基于Oracle数据库登陆界面及功能实现 Java版
    ORM中的Model与DDD中的DomainModel
    探讨DDD中角色权限与DCI的使用
    哈工大软件构造 复习
    python列表的基本用法
    matlab简单的超越方程求解近似值
    MATLAB一些常用的function
  • 原文地址:https://www.cnblogs.com/MelodyWang/p/4493888.html
Copyright © 2011-2022 走看看