zoukankan      html  css  js  c++  java
  • NetCore 中 EFcore的DbFirst和CodeFirst混合 使用注意

    NetCore 最近很火热。笔者想把自己以前的旧项目迁移到NetCore平台。

     先用EFcore的DBFirst根据数据库创建实体类,然后加入数据库版本控制功能也就是EFcore的CodeFirst部分。


     引入包  Microsoft.EntityFrameworkCore 和 Microsoft.EntityFrameworkCore.SqlServer

    Install-Package Microsoft.EntityFrameworkCore
    Install-Package Microsoft.EntityFrameworkCore.SqlServer


    先 DBFirst一下
    Scaffold-DbContext "Data Source=(localdb)v11.0;Initial Catalog=master;Integrated Security=True;" -OutputDir Models


    很简单,但有时会报错:Build failed.

    这个是因为整个项目编译不成功导致的,要确保项目能正常编译成功

    再 CodeFirst一下 Add-Migration Init -c  EcolDbContext
     -c 是指定 DbContext 根据自身情况可以不加
    生成的项目目录如下

    20181016075837_Init.cs 是指当时生成的日期Add-Migration Init的 Init组合而成 




    在项目数据库里执行一下语句。
    CREATE TABLE [dbo].[__EFMigrationsHistory] (
        [MigrationId]    NVARCHAR (150) NOT NULL,
        [ProductVersion] NVARCHAR (32)  NOT NULL
    );

    手动插入数据
    insert into ( MigrationId ,ProductVersion) values ('20181016075837_Init' ,'init')

    这样以后就可以用 CodeFirst模式升级数据库了
    现在简单演示下如何添加表

    新建类TestTableData
    1   public class TestAddData
    2     {
    3         public long Id { get; set; }
    4 
    5         public string Name { get; set; }
    6     }
    在DBContext类里加
     
     public virtual DbSet<TestAddData> TestAddData { get; set; }

    执行 包管理命令

    Add-Migration AddTable -c  EcolDbContext
    update-database   -Context  EcolDbContext

    其他修改也一样


    希望对大家有帮助,谢谢观看



    
    
  • 相关阅读:
    C#创建线程
    Halcon算子
    二叉树的层次遍历
    反转单链表
    “开-闭”原则 (Open-Closed principle, OCP)
    CSUOJ1867 John and Health rate
    LOCAL_MODULE_TAGS
    void * kmalloc(size_t size, int flags)
    printk(Loglevels string)
    container_of宏定义解析
  • 原文地址:https://www.cnblogs.com/aion111/p/9798933.html
Copyright © 2011-2022 走看看