一.MyContext注入及连接字符串配置
首先在MyContext类中,编写构造函数。
public MyContext(DbContextOptions<MyContext> options):base(options)
{
}
这样,options中包含的连接字符串及其他配置信息就可以传到MyContext类中。
然后再ASP.NET Core项目中引用data和model两个项目,在startup类中的ConfigureServices方法中注入MyContext,代码如下
services.AddDbContext<MyContext>(
options =>
{
options.UseSqlServer(_configuration.GetConnectionString("DefaultConnection"));
});
UseSqlServer方法中的参数就是数据库连接字符串的参数,不做过多说明。
二.对数据库的操作
1.查询及过滤
//简单查询可直接tolist,如下代码是查询并排序
_context.Provinces.OrderBy(x=>x.Id).ToList()
//关联属性查询可以用以下两种方法
//预加载:include,可以多个向下钻取
var provinces = _context.Provinces.Include(x => x.Cities).ThenInclude(x=>x.Mayor).ToList();
//query projections 映射查询,查询指定属性
var provinces1 = _context.Provinces.Select(x => new
{
x.Name,
x.Id,
Cities=x.Cities.Where(o=>o.AreaCode=="").ToList()//关联属性,可过滤
}).ToList();
//过滤
//根据ID过滤,两种方法均可
var province = _context.Provinces.FirstOrDefault(o => o.Id == provinceId);
var province = _context.Provinces.Find(provinceId);
//模糊匹配
var province1 = _context.Provinces.FirstOrDefault(x => EF.Functions.Like(x.Name, "%北%"));
2.添加修改及删除
具体见代码
//单个添加
_context.Provinces.Add(model);
var list=new List<Province>();
//多个添加
_context.AddRange(list);
//单个修改
_context.Provinces.Update(model);
//多个修改
_context.Provinces.UpdateRange(list);
//单个删除
_context.Provinces.Remove(model);
//多个删除
_context.Provinces.RemoveRange(list);
//提交事务,不提交不生效,同时如果多个更改有一个错误,会全部回滚
_context.SaveChanges();