ENTITY FRAMEWORK CORE入門:一、初探EFCore的操作

ENTITY FRAMEWORK CORE入門:一、初探EFCore的操作

本文使用的NetCore版本是2.2的

一、建立項目EFCoreTest01、類庫(Core.Data、EFCore.Domain.Models)

二、在EFCore.Domain.Models類庫中建立City.cs、Province.cs

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

三、在Core.Data類庫的Nuget中安裝Microsoft.EntityFrameworkCore.SqlServer

在Core.Data引用類庫EFCore.Domain.Models

四、在Core.Data類庫添加TestContext.cs

public class TestContext:DbContext
    {
        public DbSet<Province> Provinces { get; set; }
        public DbSet<City> Cities { get; set; }

        protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
        {
            //使用本地的Windows驗證
            optionsBuilder.UseSqlServer("Server=(localdb)\\WIN-NNQVERK2299\\MSSQL2012;Database=EFCore01;Uid=sa;Pwd=123456;Trusted_Connection=True;");
            //base.OnConfiguring(optionsBuilder);
        }

    }

五、EFCore遷移(在Visual Studio中使用,需要安裝Microsoft.EntityFrameworkCore.Tools)

1、步驟說明

①創建/修改Domain Model

②創建遷移文件

③應用遷移到數據庫,或者生成腳本

2、遷移操作

在Core.Data中添加MicrosoftEntityFrameworkCore.Tools

點擊選擇打開 工具=》Nuget包管理器=》程序包管理器控制檯

運行 get-help entityframeworkcore 查看命令

執行命令Add-Migration Initial,由於寫這個是第二次寫所以成功了,之前有2個錯誤:

(1)是PowerShell版本過老

(2)引用的版本不統一,注意統一下版本,我下面的截圖是能正確運行的版本

錯誤均解決後執行add-migration EFCoreTest001Migration(取個名字:EFCoreTest001Migration)

注意:啓動項必須設置成含有數據庫連接的項目程序(將Core.Data設置爲啓動項,因爲數據庫連接文件TestContext.cs在此項目中)

使用script-migration執行獲取數據庫執行文件,可直接用其在數據庫上執行生成數據庫

IF OBJECT_ID(N'[__EFMigrationsHistory]') IS NULL
BEGIN
    CREATE TABLE [__EFMigrationsHistory] (
        [MigrationId] nvarchar(150) NOT NULL,
        [ProductVersion] nvarchar(32) NOT NULL,
        CONSTRAINT [PK___EFMigrationsHistory] PRIMARY KEY ([MigrationId])
    );
END;
GO
CREATE TABLE [Provinces] (
    [Id] int NOT NULL IDENTITY,
    [Name] nvarchar(max) NULL,
    [Population] int NOT NULL,
    CONSTRAINT [PK_Provinces] PRIMARY KEY ([Id])
);
GO
CREATE TABLE [Cities] (
    [Id] int NOT NULL IDENTITY,
    [Name] nvarchar(max) NULL,
    [AreaCode] nvarchar(max) NULL,
    [ProviedId] int NOT NULL,
    [ProvinceId] int NULL,
    CONSTRAINT [PK_Cities] PRIMARY KEY ([Id]),
    CONSTRAINT [FK_Cities_Provinces_ProvinceId] FOREIGN KEY ([ProvinceId]) REFERENCES [Provinces] ([Id]) ON DELETE NO ACTION
);
GO
CREATE INDEX [IX_Cities_ProvinceId] ON [Cities] ([ProvinceId]);
GO
INSERT INTO [__EFMigrationsHistory] ([MigrationId], [ProductVersion])
VALUES (N'20200317031330_Initial', N'3.1.2');
GO
INSERT INTO [__EFMigrationsHistory] ([MigrationId], [ProductVersion])
VALUES (N'20200317032407_EFCoreTest001Migration', N'3.1.2');
GO

沒有問題之後,就可以執行Update-Database,寫數據入庫(在 C/User/用戶名  文件裏頭可以找到EFCoreDemo.mdf數據庫),檢查數據庫中庫和表均已經創建。

[正文部分結束]

 

感謝:DZW159   參考鏈接:https://www.cnblogs.com/dzw159/p/10646368.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章