EF Core(Entity Framework Core)是EF的.net core版本。EF Core对SQLServer支持很好,也可以在Linux下连接SQLServer。不过如果在Linux下首选MySQL
EFCore 的Nuget:Microsoft.EntityFrameworkCore
Pomelo.EntityFrameworkCore.MySql是使用数据库的默认字符集创建数据库,因此如果mysql是latin1字符集,那么数据库也会是latin1字符集,插入中文就会出错。因此要先手动创建utf8的数据库。
Person实体模型类
public class Person
{
public long Id { get; set; }
public string Name { get; set; }
public int Age { get; set; }
public bool? Gender { get; set; }
}
MyDbContext上下文容器类
using Microsoft.EntityFrameworkCore;
namespace MvcApp.Controllers
{
public class MyDbContext : DbContext
{
//Person表
public DbSet<Person> Person { get; set; }
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
//使用sql server数据库
//optionsBuilder.UseSqlServer("Data Source=192.168.0.207,1433;Initial Catalog=db_hk_wx;User ID=hkuser;Password=zkhk2017")
//使用mysql 数据库
optionsBuilder.UseMySql("Data Source=192.168.10.27;port=3306;Initial Catalog=db_HKTest;user id=root;password=zkhk2014;Character Set=utf8");
}
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
//配置表模型信息
modelBuilder.Entity<Person>().ToTable("Person").HasKey(r => r.Id);
modelBuilder.Entity<Person>().ToTable("Person").Property(r => r.Name).HasMaxLength(50);
}
}
}
Home控制器
public class HomeController : Controller
{
public IActionResult Index()
{
using (MyDbContext db = new MyDbContext())
{
//db.Add(new Person() { Name = "lily", Age = 25, Gender = false }); //可以这样写
db.Person.Add(new Person() { Name = "luci", Age = 25, Gender = false });
var count = db.SaveChanges();
};
return View();
}
}