zoukankan      html  css  js  c++  java
  • Entity Framework6 访问MySQL

    先用PM命令安装EF6,MySQL提供的EF实现新增、删除、修改是采用存储过程实现的

    Install-Package EntityFramework

    配置修改如下

    <?xml version="1.0" encoding="utf-8"?>
    <configuration>
      <configSections>
        <section name="dataConfiguration" type="Microsoft.Practices.EnterpriseLibrary.Data.Configuration.DatabaseSettings, Microsoft.Practices.EnterpriseLibrary.Data" />
        <!-- 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="myDb" providerName="MySql.Data.MySqlClient" connectionString="server=192.168.0.2;uid=root;pwd=123456;database=mydb2;" />
      </connectionStrings>
      <entityFramework codeConfigurationType="MySql.Data.Entity.MySqlEFConfiguration, MySql.Data.Entity.EF6">
        <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" />
        <providers>
          <provider invariantName="MySql.Data.MySqlClient" type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.Entity.EF6" />
          <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
        </providers>
      </entityFramework>
      <startup>
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
      </startup>
    </configuration>

    数据库实体及上下文定义

     [DbConfigurationType(typeof(MySqlEFConfiguration))]
        public class Parking : DbContext
        {
            public DbSet<Car> Cars { get; set; }
            public Parking()
                : base("name=myDb")
            {
            }
            // Constructor to use on a DbConnection that is already opened
            public Parking(DbConnection existingConnection, bool contextOwnsConnection)
                : base(existingConnection, contextOwnsConnection)
            {
            }
            protected override void OnModelCreating(DbModelBuilder modelBuilder)
            {
                base.OnModelCreating(modelBuilder);
                modelBuilder.Entity<Car>().MapToStoredProcedures();
            }
        }
    
        public class Car
        {
            public int CarId { get; set; }
            [MaxLength(100)]
            public string Model { get; set; }
            public int Year { get; set; }
            [MaxLength(200)]
            public string Manufacturer { get; set; }
        }

    EF调用示例

       public static void EFExecuteExample()
            {
                //string connectionString = ConfigurationManager.ConnectionStrings["mydb"].ConnectionString;
                //using (MySqlConnection connection = new MySqlConnection(connectionString))
                //{
                //    // Create database if not exists
                //    using (Parking contextDB = new Parking(connection, false))
                //    {
                //        contextDB.Database.CreateIfNotExists();
                //    }
                //    connection.Open();
                //    //MySqlTransaction transaction = connection.BeginTransaction();
                //    try
                //    {
                //        // DbConnection that is already opened
                //        using (Parking context = new Parking(connection, false))
                //        {
                //            // Interception/SQL logging
                //            context.Database.Log = (string message) => { Console.WriteLine(message); };
                //            // Passing an existing transaction to the context
                //           // context.Database.UseTransaction(transaction);
                //            // DbSet.AddRange
                //            List<Car> cars = new List<Car>();
                //            cars.Add(new Car { Manufacturer = "Nissan", Model = "370Z", Year = 2012 });
                //            cars.Add(new Car { Manufacturer = "Ford", Model = "Mustang", Year = 2013 });
                //            cars.Add(new Car { Manufacturer = "Chevrolet", Model = "Camaro", Year = 2012 });
                //            cars.Add(new Car { Manufacturer = "Dodge", Model = "Charger", Year = 2013 });
                //            context.Cars.AddRange(cars);
                //            context.SaveChanges();
                //        }
                //        //transaction.Commit();
                //    }
                //    catch(Exception ex)
                //    {
                //        Console.WriteLine(ex.Message);
                //        //transaction.Rollback();
                //        throw;
                //    }
                //}
    
                //try
                //{
                //    Database.SetInitializer(new DropCreateDatabaseIfModelChanges<Parking>());
                var context = new Parking();
                //    //插入一行值
                //    context.Cars.Add(new Car { Manufacturer = "Nissan", Model = "370Z", Year = 2012 });
                //    int result = context.SaveChanges();
                //}
                //catch (Exception ex)
                //{
                //    Console.WriteLine(ex.Message);
                //}
    
                Car car = context.Cars.First(item => item.CarId == 1); //根据ID查询
    
                var cars = context.Cars.Where(item => item.Model == "370Z"); // 条件查找
          
           cars = context.Cars.Where(item => item.Year > 2012); 
    }

    MySQL原生访问

     static void MySqlDbTest()
            {
                MySql.Data.MySqlClient.MySqlConnection conn;
                string myConnectionString;
                myConnectionString = ConfigurationManager.ConnectionStrings["myDb"].ConnectionString;
                try
                {
                    conn = new MySql.Data.MySqlClient.MySqlConnection();
                    conn.ConnectionString = myConnectionString;
                    MySqlCommand cmd = conn.CreateCommand();
                    cmd.CommandType = System.Data.CommandType.Text;
                    cmd.CommandText = "select * from users";
                    conn.Open();
                    using (MySqlDataReader reader = cmd.ExecuteReader(CommandBehavior.CloseConnection))
                    {
                        while (reader.Read())
                        {
                            Console.WriteLine("id={0},firstname={1},lastname={2}", reader.GetInt32(0), reader.GetString(1), reader.GetString(2));
                        }
                    }
                }
                catch (MySql.Data.MySqlClient.MySqlException ex)
                {
                    Console.WriteLine(ex.Message);
                }
            }
  • 相关阅读:
    面试题:使用存储过程造10w条测试数据,数据库插入10w条不同数据
    面试题:如何造10w条测试数据,在数据库插入10w条不同数据
    httprunner 2.x学习9-生成测试报告ExtentReport('dict object' has no attribute 'meta_data'问题已解决)
    httprunner 2.x学习8-参数化(引用 debugtalk 函数)
    httprunner 2.x学习7-参数化(引用外部csv数据)
    httprunner 2.x学习6-参数化与数据驱动
    httprunner 2.x学习5-测试用例集(testsuite)
    httprunner 2.x学习4-测试用例分层
    启动Hadoop HA Hbase zookeeper spark
    如何运行Spark程序
  • 原文地址:https://www.cnblogs.com/weiweictgu/p/5667850.html
Copyright © 2011-2022 走看看