asp.net core 1.1 dotnet 生成DbContext

来源:互联网 发布:局域网视频通话软件 编辑:程序博客网 时间:2024/05/31 06:21

环境

win7+vs2017+SqlServer 2012

目的

解决在vs2017创建net core 1.1 项目,生成 DbContext 文件

准备

  1. 创建一个空的 net core 1.1 的工程
  2. 运行项目能过访问 Controllers 中的方法

    startup.cs 文件中

    public void ConfigureServices(IServiceCollection services){    services.AddMvc();    }public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory){    loggerFactory.AddConsole();    if (env.IsDevelopment())    {        app.UseDeveloperExceptionPage();    }    app.UseMvc(ConfigureRoute);    app.Run(async (context) =>    {        await context.Response.WriteAsync("Hello World!");    });}private void ConfigureRoute(IRouteBuilder routeBuilder){    //Home/Index, 注意:等号两边不能有空格。    routeBuilder.MapRoute("Default", "{controller=Home}/{action=Index}/{id?}");}
  3. 安装包
    . Microsoft.EntityFrameworkCore.Tools
    . Microsoft.EntityFrameworkCore.Tools.DotNet
    . 但是安装第二个包“Microsoft.EntityFrameworkCore.Tools.DotNet”最后提示不支持,因为net core 是 1.1 版本,Tools.DotNet 是 1.0 版本,那怎么解决呢?在最下面会提出解决办法

  4. 如果没有安装上包“Microsoft.EntityFrameworkCore.Tools.DotNet”,在程序里面就会有问题

  5. 进行执行 dotnet 命令,打开如下图
    这里写图片描述
    . 打开之后切换到项目的目录,运行命令“dotnet ef migrations add v1”,会有如下提示
    这里写图片描述
    这是由于没有安装上包“Microsoft.EntityFrameworkCore.Tools.DotNet”,这个包是来处理 dotnet 命令的。

解决“Microsoft.EntityFrameworkCore.Tools.DotNet”包安装不上的办法

. 打开项目文件*.csproj,然后将下面代码复制到文件中保存

    <ItemGroup>    <DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools" Version="1.0.0" />    <DotNetCliToolReference         Include="Microsoft.EntityFrameworkCore.Tools.DotNet"        Version="1.0.0" />    <DotNetCliToolReference         Include="Microsoft.EntityFrameworkCore.Design" Version="1.0.0" />    </ItemGroup>
  1. 安装包都安装好之后,再运行命令“dotnet ef migrations add v1”提示
    这里写图片描述

    1. 这是因为我们没有创建 DbContext.cs 文件
      DbContext.cs 的代码

      using Microsoft.EntityFrameworkCore;
      namespace LoginDemo.Models
      {
      public class LoginDemoDbContext : DbContext
      {
      /* 每一个DbSet 对应于数据中的一张表。
      * 这里对应的是 Employees 表。
      */
      public DbSet Employees { get; set; }

          public      LoginDemoDbContext(DbContextOptions<LoginDemoDbContext> options)       : base(options) { }}

      }

  2. 然后再次运行命令“dotnet ef migrations add v1”提示

    这里写图片描述
    这是没有配置Startup

  3. 配置Startup的代码如下

         public Startup(IHostingEnvironment env)     {             var builder = new ConfigurationBuilder()                 .SetBasePath(env.ContentRootPath)                 .AddJsonFile("AppSettings.json");             Configuration = builder.Build();      }     public IConfigurationRoot Configuration { get; }     public void ConfigureServices(IServiceCollection services)         {             services.AddMvc();             // 添加 Entity Framework 服务,并且使用SQL Server  服务。             services.AddEntityFrameworkSqlServer().AddDbContext<LoginDemoDbContext>                  (option =>             option.UseSqlServer(Configuration["database:connection"]));         }
  4. 保存好之后,再运行同样的命令,这是没看的报错,提示成功,
    这里写图片描述
    然后打开项目会看到多了2个文件
    这里写图片描述

此时打开数据库查看:并没有当前数据库连接地址上的数据库和表

这是怎么回事呢?
因为还有一步没做,打开cmd,切换到项目*.csproj的目录,然后运行命令“dotnet ef database update”如下图
这里写图片描述

之后我们在打开数据库刷新下就可以看到连接的数据库和表了。

阅读全文
0 0
原创粉丝点击