当前位置 : 主页 > 网络编程 > net编程 >

EFCore—context在其他程序集时如何进行数据迁移

来源:互联网 收集:自由互联 发布时间:2023-08-28
场景 一般来说,如果efcore进行数据迁移的步骤如下 安装nuget包 创建实体类 创建config 创建dbcontext 然后执行如下命令就可以成功迁移了 Add-Migration Init Update-Database 一执行,报错 Unable to

场景

一般来说,如果efcore进行数据迁移的步骤如下

  1. 安装nuget包
  2. 创建实体类
  3. 创建config
  4. 创建dbcontext

然后执行如下命令就可以成功迁移了

  1. Add-Migration Init
  2. Update-Database

一执行,报错

Unable to create an object of type 'MyDbContext'. For the different patterns supported at design time, see https://go.microsoft.com/fwlink/?linkid=851728

EFCore—context在其他程序集时如何进行数据迁移_程序集

 原因是这样的。因为我当前解决方案有多个程序集,然后我的context是抽出来单独放到一个类库(EFCore)中,并不在webapi下。因此报错

EFCore—context在其他程序集时如何进行数据迁移_解决方案_02

 解决方案:

在网上找了很多资料都没解决,最后自己误打误撞解决掉了

1.首先,启动项目,设置为WebApi

EFCore—context在其他程序集时如何进行数据迁移_解决方案_03

2.然后 程序包管理器控制台的默认项目,设置为context所在程序集

EFCore—context在其他程序集时如何进行数据迁移_程序集_04

 3.检查Webapi是否引用上面的程序集

EFCore—context在其他程序集时如何进行数据迁移_程序集_05

4.webapi也需要安装nuget包

EFCore—context在其他程序集时如何进行数据迁移_解决方案_06

 做完这些,再试一次,成功! 

EFCore—context在其他程序集时如何进行数据迁移_解决方案_07

 代码示例:

dbcontext

public class MyDbContext : DbContext
{
    public DbSet<Users> Users { get; set; }

    //注入方式配置
    public MyDbContext(DbContextOptions<MyDbContext> options) : base(options)
    {
    }
}

config

using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Metadata.Builders;
using Model.Entitys;

namespace EFCore;

 class UsersConfig:IEntityTypeConfiguration<Users>
{
    public void Configure(EntityTypeBuilder<Users> builder)
    {
        builder.ToTable("Users");
    }
}

 实体类user

using System.ComponentModel.DataAnnotations;
using Model.Common;

namespace Model.Entitys;

/// <summary>
/// 用户
/// </summary>
public class Users : IEntity
{

    public long Id { get; set; }

    public string Name { get; set; }

    public string Password { get; set; }

}

在program中注入依赖

builder.Services.AddDbContext<MyDbContext>(p =>
{
    p.UseSqlServer(builder.Configuration.GetConnectionString("SQL"));
});

EFCore—context在其他程序集时如何进行数据迁移_bc_08

 然后按上面提到的步骤操作,成功

EFCore—context在其他程序集时如何进行数据迁移_解决方案_09



【文章原创作者:美国服务器 https://www.68idc.cn 欢迎留下您的宝贵建议】
上一篇:iis没有asp.net
下一篇:没有了
网友评论