Entity Framework 已经很多年了.
ef core 和 从前的 ef 6.x 用起来是差不多的.
ef core 的有点事跨平台,更好的性能,持续发展中 ...
ef 6.x 是功能比较齐全, 但是逐渐被淘汰了..
基本用法和从前是一样的, 比如
创建 DbContext, 定义 Entity 还有关系等等
namespace Project.Models { public class DB : DbContext { public DB(DbContextOptions<DB> options) : base(options) { } protected override void OnModelCreating(ModelBuilder modelBuilder) { } public virtual DbSet<Product> Products { get; set; } } }
在 startup.cs 里的 ConfigureServices 加入
services.AddDbContext<DB>(options => options.UseSqlServer("Server=192.168.1.152;Database=test-webapi-odata;User Id=keatkeat;Password=001001;"));
在 controller 依赖注入调用就可以了
public class HomeController : Controller { public DB Db { get; set; } public HomeController(DB db) { Db = db; } public async Task<IActionResult> Index() { var products = await Db.Products.ToListAsync(); return View(); } }
要生产 database 或需要 database 可以使用 ef core 的工具 migrations
这个有点像是 version control 一样, 创建 migrations -> 工具会生产一个 Up 的代码和一个 Down 的代码 用于对数据库添加内容和移除内容.
自动生产以后,我们可以手动修改这些代码,然后 update database, 这样当我们 commit 的时候 Up 代码被执行, rollback 的时候 Down 代码被执行, 大概就是这个过程.
它是用命令来操作的, 打开 Package Manager Console
输入 add-migration init
init 是一个名字,可以随意放.
输入 update-database
这时 Up 代码执行, 数据库就被更新了.
如果要 rollback 某个 version
输入 update-database somename
somename 就是你第一步我们为那一次 migrations 取得名字.
这样 Down 代码被执行,数据库成功还原了.