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

.NET Core 2.1 EF(Entity Framework) Core 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 >SpiderContext : DbContext
{
public DbSet<PageInfo> 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<PageInfo>(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 >Utils
    {
        /// <summary>
        /// 用来初始化数据库,没有则新建数据库
        /// </summary>
        static Utils()
        {
            using (var context = new SpiderContext())
            {
                context.Database.EnsureCreated();
            }
        }
         /// <summary>
        /// 获取配置信息
        /// </summary>     
        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;
        }
    }
}
特别声明:本站部分内容收集于互联网是出于更直观传递信息的目的。该内容版权归原作者所有,并不代表本站赞同其观点和对其真实性负责。如该内容涉及任何第三方合法权利,请及时与824310991@qq.com联系,我们会及时反馈并处理完毕。