zoukankan      html  css  js  c++  java
  • .Net Core控制台程序使用EF Core读写SQLite

    开发工具:vs2019;操作系统:win10

    代码下载地址:

    链接:https://pan.baidu.com/s/1dv37YxXCqwnTpRfeputc8A
    提取码:6a2l

    1、Nuget包的引用

    新建一个名为ConsoleApp1的 .Net Core控制台应用程序,然后添加一些Nuget程序包。

    Microsoft.EntityFrameworkCore.Sqlite
    Microsoft.EntityFrameworkCore.Design
    Microsoft.EntityFrameworkCore.Tools
    Microsoft.Extensions.Configuration
    Microsoft.Extensions.Configuration.Json

    ASP.NET Core 2.1以上的版本中,Microsoft.EntityFrameworkCore.Tools包包含在Microsoft.AspNetCore.App 元包。

    而 ASP.NET Core 2.1 以下的版本中需要手动引用 Microsoft.EntityFrameworkCore.Tools包。

    2、创建配置文件

    新建一个名为appsettings.json的配置文件,内容如下:

    {
      "exclude": [
        "**/bin",
        "**/bower_components",
        "**/jspm_packages",
        "**/node_modules",
        "**/obj",
        "**/platforms"
      ],
      "ConnectionStrings": {
        "db": "Data Source=db/blogging.db"
      }
    }
    

    右击appsettings.json文件属性,修改复制到输出目录的值为“如果较新则复制”。

    3、创建模型

    新建一个文件夹Models,然后在该文件夹下创建Blog.cs,内容如下:

    using System;
    using System.Collections.Generic;
    using System.Text;
    
    namespace ConsoleApp1.Models
    {
        public class Blog
        {
            public int BlogId { get; set; }
            public string Url { get; set; }
    
            public ICollection<Post> Posts { get; set; }
        }
    }
    

    在Models文件夹下创建Post.cs,内容如下:

    using System;
    using System.Collections.Generic;
    using System.Text;
    
    namespace ConsoleApp1.Models
    {
        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; }
        }
    }
    

    最后在同样目录下创建BloggingContext.cs,内容如下

    using Microsoft.EntityFrameworkCore;
    using Microsoft.Extensions.Configuration;
    using System;
    using System.Collections.Generic;
    using System.IO;
    using System.Text;
    
    namespace ConsoleApp1.Models
    {
        public class BloggingContext:DbContext
        {
            public DbSet<Blog> Blogs { get; set; }
            public DbSet<Post> Posts { get; set; }
    
            private IConfiguration configuration;
    
            public BloggingContext()
            {
                configuration = new ConfigurationBuilder().SetBasePath(Directory.GetCurrentDirectory()).AddJsonFile("appsettings.json").Build();
            }
    
            protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
            {
                optionsBuilder.UseSqlite(configuration.GetConnectionString("db"));
            }
        }
    }
    

    4、创建数据库

    先创建一个名为db的文件夹,然后打开程序包管理控制台,在控制台下输入以下命令:

    Add-Migration InitialCreate
    Update-Database
    

    创建成功后,会发现db目录下有一个blogging.db数据库。右击blogging.db属性,修改复制到输出目录的值为“如果较新则复制”。

    5、使用模型

    打开Program.cs,替换成以下内容:

    using EFCoreSqliteTest.Models;
    using System;
    
    namespace EFCoreSqliteTest
    {
        class Program
        {
            static void Main(string[] args)
            {
                using (var db = new BloggingContext())
                {
                    db.Blogs.Add(new Blog { Url = "https://blog.csdn.net/lms99251" });
                    var count = db.SaveChanges();
                    Console.WriteLine("{0} records saved to database", count);
    
                    Console.WriteLine();
                    Console.WriteLine("All blogs in database:");
                    foreach (var blog in db.Blogs)
                    {
                        Console.WriteLine(" - {0}", blog.Url);
                    }
    
                    Console.ReadKey();
                }
            }
        }
    }
    

    运行程序,控制台窗口中会出现以下内容

  • 相关阅读:
    DataList嵌套DataList
    Enterprise Library: Data Access Application Block类设计分析篇
    一些web开发中常用的、做成cs文件的js代码 搜刮来的
    DataList小结
    kill 某个线程
    在JBOSS下发布Web程序
    调整命令行的列数和行数 mode con: cols=100 lines=10000
    了解JavaScript类
    http
    Notepad++文本比较插件:Compare
  • 原文地址:https://www.cnblogs.com/xubao/p/12632882.html
Copyright © 2011-2022 走看看