Microsoft.EntityFrameworkCore应用举例

前言

Microsoft.EntityFrameworkCore 用于数据库保存和查询。
优点:1 一种代码适用于多种数据库类型如mysql,sql,sqlite等
2 对于复杂的表对应关系,可以简单写类关系,利用包控制台程序自动生产表创建方式,将类关系自动对应到表关系中,提升建表效率
3 数据查询也较方便

创建解决方案

新建控制台程序VS2019,win10系统,创建控制台程序,命名为Demo.App
添加包
在这里插入图片描述
选择最新net框架
在这里插入图片描述

新建类库Demo.Domain

在这里插入图片描述
在类库中创建以下三个类
在这里插入图片描述

using System;
using System.Collections.Generic;
using System.Text;

namespace Demo.Domain
{
   public class Player
    {
        public int Id { get; set; }
        public string Name { get; set; }
        public DateTime DateOfBrith { get; set; }
    }
}
using System;
using System.Collections.Generic;
using System.Text;

namespace Demo.Domain
{
   public class League
    {
        public int Id { get ;set; }
        public string Name { get; set; }
        public string Country { get; set; }
    }
}
using System;
using System.Collections.Generic;
using System.Text;

namespace Demo.Domain
{
  public  class Club
    {
        public Club()
        {
            Players = new List<Player>();
        }
        public int Id { get; set; }
        public string Name { get; set; }
        public string City { get; set; }
        public DateTime DateOfEstablelishment { get; set; }
        public string History { get; set; }
        public League League { get; set; }
        public List<Player> Players { get; set; }
    }
}

按照下图添加所有包文件

在这里插入图片描述

新建类库Demo.Data

给类库添加以下引用包
在这里插入图片描述
添加项目引用Demo.Domain
在这里插入图片描述
添加类DemoContext

using System;
using System.Collections.Generic;
using Microsoft.EntityFrameworkCore;
using System.Text;
using Demo.Domain;
namespace Demo.Data
{
    public class DemoContext : DbContext
    {
        protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
        {
            //创建db文件地址
            optionsBuilder.UseSqlite("Data Source=.." + "\\" + DateTime.Now.ToString("yyyy-MM") + ".db");
        }
        public DbSet<Player> Players { get;set;}
        public DbSet<League> Leagues { get; set; }
        public DbSet<Club> Clubs { get; set; }
    }
}

设置最新目标框架2.1
在这里插入图片描述
打开NUG控制台程序

选择项目Demo.Data,写入Add-Migration InitalData并回车
在这里插入图片描述
在项目中生成迁移文件夹Migrations
文件夹中包含两个文件
在这里插入图片描述

创建数据库表以及插入和查询

在Demo.App中添加代码


using System;
using Demo.Data;
using Microsoft.EntityFrameworkCore.Storage;
using Microsoft.EntityFrameworkCore.Infrastructure;
using System.Linq;
using Demo.Domain;

namespace Demo.App
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Hello World!");
            using (DemoContext context = new DemoContext ())
            {
                try
                {
                    context.Database.EnsureCreated();//确保创建数据库
                }
                catch (Microsoft.Data.Sqlite.SqliteException ex)
                {
                    Console.WriteLine(ex.ToString() + "\r\n");
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.ToString() + "\r\n");
                }

                context.SaveChanges();
            }
            using (DemoContext context = new DemoContext())
            {
                for (int i = 1; i < 10; i++)
                {
                    Player mplayer = new Player { DateOfBrith = DateTime.Now, Id = i, Name = "xiaoming" };
                    context.Add(mplayer);//插入player数据
                }
                context.SaveChanges();
            }
            using (DemoContext context = new DemoContext())
            {
                var mplayer = context.Players .ToList();//查询全部player
                foreach(var m in mplayer)
                Console.WriteLine(m.Id);
            }
            Console.ReadKey();
        }
    }
}

结果
在这里插入图片描述
另外也可以在包控制台使用命令生成数据库
Update-Database
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值