EFCore的空迁移(EFCore操作已存在的数据库表,不影响其中的数据)

9 篇文章 0 订阅
7 篇文章 0 订阅
本文讲述了如何在EFCore中处理已存在的数据库表,包括编写符合表结构的实体类、使用`Add-Migration`生成迁移文件时注释关键代码,以让EFCore认为表已存在,从而避免自动创建。
摘要由CSDN通过智能技术生成

背景:EFCore默认的会自动创建数据表,但是有时又是DBFirst,数据库写好了要用现成的表。这个时候就需要进行一些特殊的操作了

1、写出跟要对接数据库的实体类

比如我的表是这样创建的

create table mail_test
(
    user_id bigint auto_increment comment '用户ID'
        primary key,
    dept_id bigint null comment '部门ID'
)

那么对应的实体类就要对应得上

using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;

[Table("mail_test")] // 显式指定数据库中的表名
public class MailTest
{
    [Key] // 标记这是主键
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)] // 标记主键值由数据库自动生成
    [Column("user_id")] // 显式指定映射到数据库列的名称
    public long UserId { get; set; }

    [Column("dept_id")] // 同样,显式指定映射到数据库列的名称
    public long? DeptId { get; set; }
}

-- 这个可以让ai写一下

2、Add-Migration

3、注释掉新的迁移类中的Up和Down方法里面的内容

4、update-database

总结:写好对应数据库表对应的实体类,生成的迁移类Up和Down中注释掉创建这个表的代码(欺骗EFCore,让它以为创建好了)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值