根据数据库生成模型

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"];
        }

 

发表回复