我正在尝试使用efcore迁移生成数据库和表。我有一个类库项目,其中包含所有必要的实体和迁移数据。我正在另一个asp.net core 2.1 web应用程序中引用类库项目。运行时
添加迁移初始值
命令在nuget包管理器控制台中选择类库项目,在类库项目中生成迁移文件。
当我运行命令时
更新数据库
选择类库和web项目,我得到的消息是:
未应用任何迁移。数据库已经是最新的。
我的dbcontextclass:
public class UserDbContext:DbContext
{
public UserDbContext(DbContextOptions<UserDbContext> options) : base(options){}
public DbSet<LoginSession> login_sessions { get; set; }
public DbSet<Authentication> authentications { get; set; }
public DbSet<RolePermissionMap> role_permission_maps { get; set; }
public DbSet<Entity.User> users { get; set; }
public DbSet<Role> roles { get; set; }
public DbSet<UserRole> user_roles { get; set; }
}
我试过跑步
dotnet ef数据库更新
命令从控制台选择类库项目,我得到一个错误消息说:
无法分析指定的框架版本“2.1”。找不到指定的框架“microsoft.netcore.app”版本“2.1”。
当我将类库中的所有重要文件复制到另一个web应用程序项目(即迁移文件和web项目在同一个文件中)时,一切正常。
我想知道为什么当类库和web应用程序在不同的文件中时,我会出现那个错误,并且找不到解决方案。有人能帮我吗?我在web应用程序中引用了许多类库。因此,我无法将所有必需的文件移植到另一个web应用程序,而只是为了生成数据库表。
1条答案
按热度按时间vql8enpb1#
我以前也遇到过类似的问题。
两条建议:
请考虑从项目中取消整个“迁移”(所有目录、文件等),然后重新运行
dotnet ef migrations add...
,后跟dotnet ef database update...
考虑使用pomelo data provider for mysql:https://www.nuget.org/packages/pomelo.entityframeworkcore.mysql