开发手册 欢迎您!
软件开发者资料库

.NET Core 2.1 EF(Entity Framework) Core Sqlite配置和使用分享

本文主要介绍.NET Core2.1,在EF(Entity Framework) Core中配置使用Sqlite数据库,自动创建Sqlite数据库,自动创建表。

1、安装用到的Nuget包

项目上右键 -》选择"管理Nuget程序包" -》搜索"Microsoft.EntityFrameworkCore.Sqlite" -》点击"Microsoft.EntityFrameworkCore.Sqlite"安装,还要安装"Microsoft.EntityFrameworkCore.Sqlite.Core"和"Microsoft.EntityFrameworkCore.Tools"。

Nuget使用教程

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;        }    }}