Mysql lõi mạng

Có thể tải xuống gói Entity Framework MySQL bằng gói NuGet Pomelo. Thực thểKhungLõi. MySql. Hiện tại không có nhà cung cấp chính thức nào từ MySQL tồn tại cho Entity Framework Core có thể được sử dụng trong ASP. ứng dụng NET Core

bưởi. Thực thểKhungLõi. Gói MySql có thể được thêm vào tệp csproj



  
    netcoreapp3.1
    DataAccessMySqlProvider
    DataAccessMySqlProvider
  

  
    
  

  
    
    
    
  



Dự án web tải dự án bằng EF Core cần hỗ trợ di chuyển nếu bạn muốn tạo cơ sở dữ liệu theo cách này



  
    netcoreapp3.1
    AspNetCoreMultipleProject
    AspNet5MultipleProject
    AspNetCoreMultipleProject.Program
  

  
    
    
    
    
    
  
  
  
    
    
    
    
    
  
  
    
  


Có thể thêm một EfCore DbContext giống như bất kỳ ngữ cảnh nào khác được hỗ trợ bởi Entity Framework Core

using System;
using System.Linq;
using DomainModel.Model;
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.Configuration;

namespace DataAccessMySqlProvider
{ 
    // >dotnet ef migration add testMigration
    public class DomainModelMySqlContext : DbContext
    {
        public DomainModelMySqlContext(DbContextOptions options) :base(options)
        { }
        
        public DbSet DataEventRecords { get; set; }

        public DbSet SourceInfos { get; set; }

        protected override void OnModelCreating(ModelBuilder builder)
        {
            builder.Entity().HasKey(m => m.DataEventRecordId);
            builder.Entity().HasKey(m => m.SourceInfoId);

            // shadow properties
            builder.Entity().Property("UpdatedTimestamp");
            builder.Entity().Property("UpdatedTimestamp");

            base.OnModelCreating(builder);
        }

        public override int SaveChanges()
        {
            ChangeTracker.DetectChanges();

            updateUpdatedProperty();
            updateUpdatedProperty();

            return base.SaveChanges();
        }

        private void updateUpdatedProperty() where T : class
        {
            var modifiedSourceInfo =
                ChangeTracker.Entries()
                    .Where(e => e.State == EntityState.Added || e.State == EntityState.Modified);

            foreach (var entry in modifiedSourceInfo)
            {
                entry.Property("UpdatedTimestamp").CurrentValue = DateTime.UtcNow;
            }
        }
    }
}

Trong một ASP. NET Core, DbContext được thêm vào ứng dụng trong lớp khởi động. Trong ví dụ này, DbContext được định nghĩa trong một thư viện lớp khác. MigrationsAssembly cần được xác định để quá trình di chuyển sẽ hoạt động. Nếu bối cảnh và di chuyển được xác định trong cùng một cụm, điều này là không bắt buộc

public Startup(IHostingEnvironment env)
{
	var builder = new ConfigurationBuilder()
		.SetBasePath(env.ContentRootPath)
		.AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
		.AddJsonFile("config.json", optional: true, reloadOnChange: true);

	Configuration = builder.Build();
}
		
public void ConfigureServices(IServiceCollection services)
{	
	var sqlConnectionString = Configuration.GetConnectionString("DataAccessMySqlProvider");

	services.AddDbContext(options =>
		options.UseMySQL(
			sqlConnectionString,
			b => b.MigrationsAssembly("AspNetCoreMultipleProject")
		)
	);
}

Ứng dụng sử dụng cấu hình từ cấu hình. json. Tệp này được sử dụng để lấy chuỗi kết nối MySQL, được sử dụng trong lớp Khởi động

{
    "ConnectionStrings": {  
        "DataAccessMySqlProvider": "server=localhost;userid=damienbod;password=1234;database=damienbod;"
        }
    }
}

Bàn làm việc của MySQL có thể được sử dụng để thêm lược đồ 'damienbod' vào cơ sở dữ liệu MySQL. Người dùng 'damienbod' cũng được yêu cầu, phải khớp với người dùng đã xác định trong chuỗi kết nối. Nếu bạn cấu hình cơ sở dữ liệu MySQL khác, thì bạn cần thay đổi chuỗi kết nối trong cấu hình. tập tin json