(Entity Framework Core入门)一、EFCore简介

1.说明:

一种ORM(Object Relational Mapper),用于程序中的class类和数据库中的表互相之间进行建立映射关系

2.优势

1)生产力

2)支多种数据库

3)可以使用Linq

4)注重领域(Domain),而不是数据库

 

3.支持框架

1).NET Core2.X

2).NET 4.6.1+

3)UWP

4)Xamarin

 

4.使用

1)建立项目EFCore、类库(Core.Data、EFCore.Domain.Models)

 

2)在EFCore.Domain.Models类库中建立City.cs、Province.cs

 

Province.cs

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

namespace EFCore.Domain.Models
{
    /// <summary>
    /// 省份
    /// </summary>
    public class Province
    {
        public Province()
        {
            Cities = new List<City>();
        }

        /// <summary>
        /// 编码
        /// </summary>
        public int Id { get; set; }

        /// <summary>
        /// 省份名称
        /// </summary>
        public string Name { get; set; }

        /// <summary>
        /// 人口
        /// </summary>
        public int Population { get; set; }

        /// <summary>
        /// 城市
        /// </summary>
        public List<City> Cities { get; set; }

    }
}

 

City.cs

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

namespace EFCore.Domain.Models
{
    /// <summary>
    /// 城市
    /// </summary>
    public class City
    {
        /// <summary>
        /// 编码
        /// </summary>
        public int Id { get; set; }

        /// <summary>
        /// 城市名称
        /// </summary>
        public string Name { get; set; }

        /// <summary>
        /// 邮编
        /// </summary>
        public string AreaCode { get; set; }

        /// <summary>
        /// 所属省份编码
        /// </summary>
        public int ProviedId { get; set; }

        /// <summary>
        /// 省份
        /// </summary>
        public Province Province { get; set; }
    }
}

 

3)在Core.Data类库的Nuget中安装Microsoft.EntityFrameworkCore.Sql

 

4)引用类库EFCore.Domain.Models

 

5)在Core.Data类库添加MyContext.cs

using Microsoft.EntityFrameworkCore;
using System;
using System.Collections.Generic;
using System.Text;
using EFCore.Domain.Models;

namespace Core.Data
{
    public class MyContext:DbContext
    {
        public DbSet<Province> Provinces { get; set; }
        public DbSet<City> Cities { get; set; }

        protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
        {
            //使用本地的Windows验证
            optionsBuilder.UseSqlServer("Server=(localdb)\\mssqllocaldb;Database=EFCoreDemo;Trusted_Connection=True;");
            //base.OnConfiguring(optionsBuilder);
        }

    }
}

 

5.EFCore迁移(在Visual Studio中使用,需要安装Microsoft.EntityFrameworkCore.Tools)

1)步骤说明

①创建/修改Domain Model

②创建迁移文件

③应用迁移到数据库,或者生成脚本

 

2)迁移

①在Core.Data类库的Nuget中安装Microsoft.EntityFrameworkCore.Tools

 

②点击选择打开 工具=》Nuget包管理器=》程序包管理器控制台

 

 ③在 程序包管理器控制台 运行 get-help entityframeworkcore 查看命令

 

④执行命令 Add-Migration Initial 

结果发现:

 

原因:电脑PowerShell版本太低(https://www.microsoft.com/zh-CN/download/details.aspx?id=40855

 升级后执行add-migration build123(取个名字:build123 )

注意:启动项必须设置成含有数据库连接的项目程序(将Core.Data设置为启动项,因为数据库连接文件MyContext.cs在此项目中)

 

得到生成文件:

快照文件:MyContextModelSnapshot.cs

迁移文件:20190409135744_build123.cs

 

⑤使用script-migration执行获取数据库执行文件(fy5kwycw.sql),用其在数据库上执行生成数据库

 


或者使用Update-Database直接生成数据库,然后在 C/User/用户名  文件里头可以找到EFCoreDemo.mdf数据库

 

 

查看数据库

 

 

 

感谢:Dave

参阅: https://v.qq.com/x/page/h0762wjguc5.html

 

posted @ 2019-04-10 00:18  蜗牛的礼物  阅读(1327)  评论(0编辑  收藏  举报