asp.net core 系列 21 EF现有数据库进行反向工程

一.概述

  在上篇中使用EF基于数据模型创建数据库,  本篇继续使用 EF  基于数据库创建数据模型。  实现对已有数据库进行反向工程,来构建数据访问的 ASP.NET Core MVC 应用程序。已有数据库使用上篇的EFGetStarted.AspNetCore.NewDb库。这里还是使用Visual Studio 2017和sql server 2012来演示。

 

  1.1 创建新项目

                   打开 Visual Studio 2017

                   “文件”>“新建”>“项目...”

                   从左菜单中选择“已安装”>“Visual C#”>“Web”。

                   选择“ASP.NET Core Web 应用程序”项目模板

                   输入 EFGetStarted.AspNetCore.ExistingDb 作为名称(它必须完全匹配稍后在代码中使用的命名空间),再单击“确定”

                   等待“新建 ASP.NET Core Web 应用程序”对话框显示出来

                   确保目标框架下拉列表设置为 .NET Core,版本下拉列表设置为 ASP.NET Core 2.2

                   选择“Web 应用程序(模型视图控制器)”模板

                   确保将“身份验证”设置为“无身份验证”

                   单击“确定”

  

  1.2 安装 Entity Framework Core

    安装方法上篇以有介绍。 PM>  install-package Microsoft.EntityFrameworkCore.SqlServer -Version 2.2.0

 

  1.3 对模型实施反向工程

    基于现有数据库创建 EF 模型,选择“工具”–>“NuGet 包管理器”–>“包管理器控制台”。 运行以下命令(一条命令,排版是二行):

    PM> Scaffold-DbContext   "Data Source ={ip};Initial Catalog = EFGetStarted.AspNetCore.NewDb; User ID = hsr;Password =js*2015;" 
    Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models

    可以通过将 -Tables 参数添加到上述命令来指定要为哪些表生成实体, 例如 -Tables Blogs,Posts。反向工程过程基于现有数据库的架构创建实体类 (Blogs.cs & Posts.cs) 和派生上下文 (EFGetStartedAspNetCoreNewDbContext.cs),上下文表示与数据库的会话,并允许查询和保存实体类的实例。命令自动生成如下实体类:

        

 

  1.4 通过依赖关系注入注册上下文

    在 Startup.cs 中注册并配置上下文。这里实现与上一篇一样。通过AddDbContext(...) 方法将EF上下文注册为服务。

        public void ConfigureServices(IServiceCollection services)
        {
            services.Configure<CookiePolicyOptions>(options =>
            {
                // This lambda determines whether user consent for non-essential cookies is needed for a given request.
                options.CheckConsentNeeded = context => true;
                options.MinimumSameSitePolicy = SameSiteMode.None;
            });

            /*
             using EFGetStarted.AspNetCore.ExistingDb.Models;
             using Microsoft.EntityFrameworkCore; 
             */
            services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
            var connection = "Data Source = {ip}; Initial Catalog = EFGetStarted.AspNetCore.NewDb; User ID = hsr;Password =js*2015;";
            services.AddDbContext<EFGetStartedAspNetCoreNewDbContext>
                (options => options.UseSqlServer(connection));
        }

 

  1.5 创建控制器和视图    

    创建BlogsController控制器,在Index方法中读出数据,在视图Blogs/index下显示。

    public class BlogsController : Controller
    {
        public EFGetStartedAspNetCoreNewDbContext NewDbContext { get; }
        public BlogsController(EFGetStartedAspNetCoreNewDbContext _NewDbContext)
        {
            this.NewDbContext = _NewDbContext;
        }

        // GET: /<controller>/
        public IActionResult Index()
        {
            var blogs = NewDbContext.Blogs.ToList();
            return View(blogs);
        }
    }
<!--  index !-->
@model  IList<Blogs>

@{
    foreach (var item in Model)
    {
        <p>"url:" @item.Url </p>
    }
}

    在Blogs控制器的index中,通过EF查询出Blogs集合,通过View 重载方法返回一个集合对象 View(blogs), 在Blogs/index页,声明一个IList<Blogs>泛型对象,约定将自动把返回的数据映射到index页面的泛型对象上。如下所示:

 

   参考文献:

    官方资料:ASP.NET Core 现有数据库 

 

转载于:https://www.cnblogs.com/MrHSR/p/10336962.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ASP.NET Core 中访问数据库通常需要进行以下步骤: 1. 安装数据库驱动程序:根据你使用的数据库类型,安装对应的驱动程序,例如使用 SQL Server 数据库需要安装 Microsoft.Data.SqlClient。 2. 在 Startup.cs 文件中配置数据库连接字符串:在 ConfigureServices 方法中添加以下代码: ```csharp services.AddDbContext<ApplicationDbContext>(options => options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection"))); ``` 其中 ApplicationDbContext 是你的上下文类名,而 "DefaultConnection" 是你在 appsettings.json 文件中配置的连接字符串名称。 3. 创建上下文类:在你的项目中创建一个继承自 DbContext 的上下文类,例如: ```csharp public class ApplicationDbContext : DbContext { public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options) : base(options) { } public DbSet<Product> Products { get; set; } } ``` 其中 Product 是你的实体类,DbSet<Product> 表示对应数据库中的表。 4. 在控制器中使用上下文类:在你的控制器中通过依赖注入使用上下文类,例如: ```csharp public class ProductsController : Controller { private readonly ApplicationDbContext _context; public ProductsController(ApplicationDbContext context) { _context = context; } public IActionResult Index() { var products = _context.Products.ToList(); return View(products); } } ``` 以上就是在 ASP.NET Core 中访问数据库的基本步骤,具体的操作和实现方式会根据不同的数据库类型和项目需求而有所不同。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值