Entity Framework Core
一直用的是PetaPoco这类轻量级的ORM,现在想上.NET Core / Standard平台,研究一下适合的ORM,目前PetaPoco还不支持,Dapper支持.NETStandard了。
先回顾一下Linq的一些操作,
// 查询单条 entity.proj.Where(m => m.proj_id == projID && m.is_delete == false).FirstOrDefault(); // 查询多条记录 entity.proj.Where(m => m.is_delete == false).OrderBy(m => m.proj_id).ToList(); // 排序 entity.proj.Where(m => m.is_delete == false && m.battery_type_id == battery_type_id).OrderBy(m => m.proj_id).ToList();
(from ur in entity.tray
join r in entity.line on ur.line_id equals r.line_id
where ur.line_id == lineID
select ur).ToList();
entity.Database.ExecuteSqlCommand(@"DELETE FROM ops WHERE ops_id=" + opsInfo.ops_id);
支持MySQL的EF框架有MySQL官方的MySql.Data.EntityFrameworkCore,第三方的Pomelo.EntityFrameworkCore.MySql,用法都基本一样的。定义实体,定义一个DataContext,然后直接调用了。不管那个,Microsoft.EntityFrameworkCore是必须要引用的。
实体如果是DB First,可以自动生成,生成需要用到工具Microsoft.EntityFrameworkCore.Tools,安装这个NuGet包即可,使用方法敲NuGet命令。
Entity Framework Core Tools for the NuGet Package Manager Console in Visual Studio. Enables these commonly used commands: Add-Migration Drop-Database Get-DbContext Scaffold-DbContext Script-Migrations Update-Database
# 从数据库生成实体类 Scaffold-DbContext "Server=localhost;database=ef;uid=root;pwd=123456;Port=3307;Ssl Mode=0" Pomelo.EntityFrameworkCore.MySql -OutputDir LimsModels
生成的实体命名有大小写问题 ,都是骆驼命名,但数据库里是小写,且下划线也没了,这个问题。user_name变成UserName
调用 使用方法
using (var context = new LimsModels.efContext()) { //Creates the database if not exists context.Database.EnsureCreated(); //var user = new User { Name = "Jack Cai" }; //context.Users.Add(user); //var user = new User { UserId = 1, Name = "Jack Cai 222" }; //context.Users.Update(user); //var user = new User {UserId=2, Name = "Jack Cai" }; //context.Users.Remove(user); //context.SaveChanges(); //foreach (var u in context.Users) //{ // Console.WriteLine(u.Name); //} //引用 Microsoft.EntityFrameworkCore context.Users.Include(); //引用 Linq命令空间 var lst = context.Users.Where(r => r.UserId == 1).Take(1).ToList(); foreach (var u in lst) { Console.WriteLine(u.Name); } Console.Read(); }
浙公网安备 33010602011771号