EF Core连接、使用Sql Server

本文详细介绍如何在ASP.NET Core Web应用中使用Entity Framework Core (EF Core)与SQL Server结合,从项目搭建、数据库配置到实体创建及数据库操作,提供完整的实践步骤。

昨天在学EF Core时遇到了一个小问题,官方文档教程里使用的是Sqlite,与自己所使用的Sql Server实现有些许不同。上网浏览他人博客后,都没有找到想要的答案,最后在一个不是很出名的网站上找到了自己想要的,在此将其转载至优快云上,仅为传播技术。

原文链接


原文中没有图片,在此也没有为此配图,如果想要看一些更详细的操作,请阅读此博客https://www.cnblogs.com/afei-24/p/11012886.html

先来一个CodeFirst
新建项目
这里我们选择 ASP.NET Core Web Application (.NET Core)

这里选择web 应用程序,然后更改身份验证 改为 不进行身份验证

然后再包管理控制台里执行下面两条命令

引用 EntityFrameworkCore

Install-Package Microsoft.EntityFrameworkCore

再引用 EntityFrameworkCore.SqlServer

Install-Package Microsoft.EntityFrameworkCore.SqlServer

创建实体
我们在项目添加一个 Models 文件夹。
新建一个User.cs

 public class User
    {
        public int Id { get; set; }
        public string UserName { get; set; }
        public string Password { get; set; }
    }

这里我为了方便,继续新建 DataContext.cs

public class DataContext : DbContext
    {
        public DataContext(DbContextOptions options)
            : base(options)
        {
        }
        public DbSet Users { get; set; }
    }

创建数据库
打开 Startup.cs 在 ConfigureServices 下添加如下代码:

   public void ConfigureServices(IServiceCollection services)
        {        //这里就是填写数据库的链接字符串
            var connection = "Data Source=.;Initial Catalog=EFCore;User ID=sa;Password=sa.123";
            services.AddDbContext(options => options.UseSqlite(connection));
            // Add framework services.
            services.AddMvc();
        }

添加好以后,我们来安装 Microsoft.EntityFrameworkCore.Tools

Install-Package Microsoft.EntityFrameworkCore.Tools –Pre

在文件资源管理器中找到这个项目,找到 project.json文件

在 tools节点下 增加代码

 "Microsoft.EntityFrameworkCore.Tools": {
      "version": "1.0.0-preview1-final",
      "imports": [
        "portable-net45+win8+dnxcore50",
        "portable-net45+win8"
      ]
    },

效果如下图

之后 开始创建数据库 使用 dotnet ef 命令
先打开cmd 窗口 ,跳转到当前项目文件夹
输入

 dotnet ef migrations add MyFirstMigration

再输入

 dotnet ef database update

这样数据库就创建好了

注意
如果 IIS-Express 在运行中,你会遇到错误 CS2012: Cannot open ‘MvcMovie/bin/Debug/netcoreapp1.0/MvcMovie.dll‘ for writing – ‘The process cannot access the file ‘MvcMovie/bin/Debug/netcoreapp1.0/MvcMovie.dll‘ because it is being used by another process.‘

dotnet ef 命令

dotnet (.NET Core) 是 .NET 的跨平台实现。你可以在这里了解它。
dotnet ef migrations add Initial 运行 Entity Framework .NET Core CLI 迁移命令并创建初始化迁移。参数 “Initial” 可以是任意值,但是通常用这个作为第一个(初始的) 数据库迁移。这个操作创建了一个 Data/Migrations/_Initial.cs 文件,这个文件包含了添加(或删除)Movie 表到数据库的迁移命令。
dotnet ef database update dotnet ef database update 用我们刚刚创建的迁移来更新数据库。

添加 UserController

public class UserController : Controller
    {
        private efcoredemoContext _context;

        public UserController(efcoredemoContext context)
        {
            _context = context;
        }

        // GET: //
        public IActionResult Index()
        {
            return View(_context.Users.ToList());
        }
    }

添加 Index.cshtml

@model IEnumerable

@{
    ViewBag.Title = "用户";
}


    @foreach (var item in Model)
    {
        
            <div class="card-body text-center">
            	<h4>ID:@item.ID</h4>
            	<h4>用户名: @item.UserName</h4>
			</div>
            
        
    }
### 使用 EF Core 连接 SQL Server 数据库 #### 创建项目并安装必要的 NuGet 包 为了使用 Entity Framework Core (EF Core),需要创建一个新的 .NET Core 控制台应用程序或其他类型的 ASP.NET Core 应用程序。接着,在解决方案资源管理器中右键单击项目名称,选择“管理NuGet包”,然后搜索并安装 `Microsoft.EntityFrameworkCore.SqlServer` 和 `Microsoft.EntityFrameworkCore.Tools`。 ```bash dotnet add package Microsoft.EntityFrameworkCore.SqlServer dotnet add package Microsoft.EntityFrameworkCore.Tools ``` #### 配置数据库上下文类 定义一个继承自 DbContext 的新类来表示要使用的数据库模型。在这个例子中假设有一个名为 BloggingContext 的类[^2]: ```csharp using Microsoft.EntityFrameworkCore; public class BloggingContext : DbContext { public DbSet<Blog> Blogs { get; set; } protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) => optionsBuilder.UseSqlServer( @"Server=(localdb)\mssqllocaldb;Database=Blogging;Trusted_Connection=True;"); } ``` 这里配置了一个本地的 SQL Server 实例作为目标数据库,并启用了 Windows 身份验证。 #### 定义实体类 接下来定义一些用于映射表结构的数据对象(即实体)。例如下面是一个简单的博客文章实体类: ```csharp public class Blog { public int BlogId { get; set; } public string Url { get; set; } public List<Post> Posts { get; } = new(); } public class Post { public int PostId { get; set; } public string Title { get; set; } public string Content { get; set; } public int BlogId { get; set; } public Blog Blog { get; set; } } ``` 这些属性对应于数据库中的列名;而导航属性允许轻松访问关联的对象集合。 #### 初始化迁移和更新数据库 通过命令行工具执行以下命令来自动生成初始迁移文件并将更改应用到实际存在的数据库上[^5]: ```powershell Add-Migration InitialCreate Update-Database ``` 这会基于当前代码首次设置好所需的架构。 #### 查询数据 最后一步就是编写具体的业务逻辑来进行增删改查操作了。比如获取所有的博客记录可以这样写[^4]: ```csharp using var context = new BloggingContext(); var blogs = from b in context.Blogs orderby b.Url select b; foreach (var item in blogs) { Console.WriteLine(item); } ``` 上述过程展示了如何利用 EF Core 来快速搭建起与 SQL Server 数据库之间的桥梁,从而更高效地完成 CRUD 操作以及复杂查询等功能。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值