EFCore的使用(Sql或Mysql)

1.安装nuget包,

Install-package Microsoft.EntityFrameworkCore
Install-package Microsoft.EntityFrameworkCore.SqlServer

Install-package Microsoft.EntityFrameworkCore.Tools

2.创建尸体上下文类

  public class TestContext : DbContext
  {
    public TestContext()
    {

    }
    /// <summary>
    /// constructor for Coding first
    /// </summary>
    /// <param name="options"></param>
    public TestContext(DbContextOptions<TestContext> options) : base(options) { 
    
    }
    protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) {
      //optionsBuilder.UseSqlServer(@"Server=.;Database=Blogging;Integrated Security=True;User ID=tom;Password=MS410882wangcong");
      optionsBuilder.UseSqlServer(@"Server=.;Database=dbnamep;User ID=t;Password=;");
    }
    public DbSet<LocationInfo> locationInfos { get; set; }
    public DbSet<Car> cars { get; set; }
  }

  /// <summary>
  /// location information
  /// </summary>
  [Table("LocationInfo")]
  public class LocationInfo
  {
    [Key]
    public int id { get; set; }
    //[Key]
    //public int id { get; set; }
    /// <summary>
    /// name
    /// </summary>
    public string name { get; set; }

    /// <summary>
    /// address
    /// </summary>
    public string address { get; set; }
  }
  [Table("Car")]
  public class Car
  {
    [Key]
    public int id { get; set; }
    public string carName { get; set; }
  }

3.在action中使用

    [HttpPost]
    public string Post(object user) {
      User userModel = JsonConvert.DeserializeObject<User>(user.ToString());
      try {
        using (var content = new TestContext())
        {
          var log = logging;
          var a = content.cars;
          content.cars.Add(new Car() { carName = userModel.firstName });
          content.SaveChanges();
        }
      }
      catch (Exception e) {
        Console.WriteLine(e.Message);
      }
      return $"post success:{userModel.firstName}";
    }

4.Coding first,根据代码生成数据库和数据库的表

注意,一定要安装

Microsoft.EntityFrameworkCore.Tools
4.1在startup类中声明
      #region  EF Coding first
      services.Configure<CookiePolicyOptions>(options =>
      {
        // This lambda determines whether user consent for non-essential cookies is needed for a given request.
        options.CheckConsentNeeded = context => true;
        options.MinimumSameSitePolicy = SameSiteMode.None;
      });

      var connectionString = Configuration.GetConnectionString("DefaultConnection");
      services.AddDbContext<TestContext>(options =>
      options.UseSqlServer(connectionString));

      services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_3_0);

      #endregion

4.2实体上下文添加构造函数

    /// <summary>
    /// constructor for Coding first
    /// </summary>
    /// <param name="options"></param>
    public TestContext(DbContextOptions<TestContext> options) : base(options) { 
    
    }

4.3 Tools=>Nuget package manager => package manager console

先输入 Add-Migration FirstMigration,再输入Update-Database。迁移成功后,会创建数据库,以及会在项目中生成一个Migrations文件夹,里面时迁移记录。

 二.MySql

与sqlserver的区别在于2点,1.应用程序集不同,2.在startup类中使用UseMySql替换UseSqlserver

2.1.下载Mysql.Data.EntityFrameworkCore

 2.2 StartUp类中

public void ConfigureServices(IServiceCollection services)
        {
            services.Configure<CookiePolicyOptions>(options =>
            {
                // This lambda determines whether user consent for non-essential cookies is needed for a given request.
                options.CheckConsentNeeded = context => true;
                options.MinimumSameSitePolicy = SameSiteMode.None;
            });


            services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);

            var connection = Configuration.GetConnectionString("MysqlConnection");
            services.AddDbContext<MysqlDbContext>(options => options.UseMySQL(connection));
        }

2.3DbContext

public class MysqlDbContext : DbContext
    {
        public MysqlDbContext(DbContextOptions<MysqlDbContext> options):base(options)
        {

        }
        //protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
        //{
        //    optionsBuilder.UseMySQL("server=.;database=TestDb;user=root;password=123456;");
        //}
        //protected override void OnModelCreating(ModelBuilder modelBuilder)
        //{
        //    base.OnModelCreating(modelBuilder);
        //}

        public DbSet<Student> students { get; set; }
    }


原文地址:https://www.cnblogs.com/kingsmart/p/14991814.html