.Net Core EF的一些操作
根据数据库生成模型
Scaffold-DbContext "连接字符串" Microsoft.EntityFrameworkCore.SqlServer -OutputDir 输出路径(相对路径)
如果使用依赖注入,请务必做如下操作:(其中的XXXContext中的XXX为你的数据库名)
1:删除输出目录下XXXContext文件内的OnConfiguring方法
2:添加构造函数
public XXXContext(DbContextOptions<XXXContext> options) : base(options) { }
在控制器中使用EF Core
1:添加构造函数(其中YYYController为你自己的控制器名,XXXContext为你自己的EF上下文名)
WebAPITestContext _db = null; public YYYController(XXXContext context) { _db = context; }
2:使用方法(与Entity Framework中的使用类似)
using (_db) { var userList = _db.User.Where(dt => dt.Name.Contains(key)).ToList(); }
PS:如果有些方法不方便使用构造函数,可通过以下方法曲线救国
1:在生成的context中添加一个属性用于存储连接字符串
/// <summary> /// 定义数据连接字符串 /// </summary> public static string ConStr { get; set; }
2:OnConfiguring()方法做如下修改
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) { //配置数据链接 optionsBuilder.UseSqlServer(ConStr, b => b.UseRowNumberForPaging()); }
3:Startup.cs做如下修改
public void ConfigureServices(IServiceCollection services) { services.AddMvc(); //services.AddDbContext<WebAPITestContext>(config => { config.UseSqlServer(Configuration.GetConnectionString("Default")); });//删除--- WebAPITestContext.ConStr = Configuration.GetConnectionString("Default");//增加+++ AppSettins.MaxLoginFailureHours = Configuration.GetSection("AppSettings")["MaxLoginFailureHours"]; }