1、安装用到的Nuget包
项目上右键 -》选择"管理Nuget程序包" -》搜索"Microsoft.EntityFrameworkCore.Sqlite
" -》点击"Microsoft.EntityFrameworkCore.Sqlite
"安装,还要安装"Microsoft.EntityFrameworkCore.Sqlite.Core
"和"Microsoft.EntityFrameworkCore.Tools
"。
2、连接字符串和数据库中字段验证
using Microsoft.EntityFrameworkCore;using SpiderContent.Data.Models;using System;using System.Collections.Generic;using System.Text;namespace SpiderContent.Data{ public class SpiderContext : DbContext { public DbSet PageInfos { get; set; } protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) { optionsBuilder.UseSqlite("Filename=./spider.db"); } protected override void OnModelCreating(ModelBuilder modelBuilder) { base.OnModelCreating(modelBuilder); modelBuilder.Entity(entity => { entity.HasKey(e => e.Id); entity.Property(e => e.Title).IsRequired(); }); } }}
3、数据库初始化和工具方法代码
using Microsoft.Extensions.Configuration;using SpiderContent.Data.Models;using System;using System.Linq;using System.Reflection;namespace SpiderContent.Data{ public class Utils { /// /// 用来初始化数据库,没有则新建数据库 /// static Utils() { using (var context = new SpiderContext()) { context.Database.EnsureCreated(); } } /// /// 获取配置信息 /// private static IConfigurationRoot configuration; public static IConfigurationRoot Configuration { get { if (configuration == null) { var builder = new ConfigurationBuilder().AddJsonFile("appsettings.json"); configuration = builder.Build(); } return configuration; } } public static void SaveData(PageInfo pageInfo) { using (var context = new SpiderContext()) { context.PageInfos.Add(pageInfo); context.SaveChanges(); } } public static void SaveOrUpdate(PageInfo pageInfo) { using (var context = new SpiderContext()) { PageInfo p = context.PageInfos.Where(w => w.Url.Trim() == pageInfo.Url.Trim()).FirstOrDefault(); if (p != null) { p.Page = pageInfo.Page; p.PlainText = pageInfo.PlainText; p.Title = pageInfo.Title; p.Url = pageInfo.Url; p.views = pageInfo.views; p.votes = pageInfo.votes; p.answers = pageInfo.answers; p.askedTime = pageInfo.askedTime; p.askedTimeBounty = pageInfo.askedTimeBounty; p.description = pageInfo.description; context.Update(p); } else { context.Add(pageInfo); } context.SaveChanges(); } } public static PageInfo ToPageInfo(object model) { PageInfo pageInfo = new PageInfo(); PropertyInfo property = null; foreach (var item in typeof(PageInfo).GetProperties()) { property = model.GetType().GetProperty(item.Name); if (property != null) { item.SetValue(pageInfo, property.GetValue(model)); } } return pageInfo; } }}