您好我刚刚使用ASP.NET Core 1.0和Entity Framework Core 1.0创建了一个新项目。这是我的项目结构:
我希望避免向DataAccess层添加引用,因为所有调用都必须抛出管理器层以保持解耦,我认为WebApi层不应该知道我正在使用什么DataAccess技术。如果有任何方法不添加对Microsoft.EntityFrameworkCore.Tools": "1.0.0-preview2-final"
的引用,请告诉我我尝试在Commercify.DataAccess.Catalog中添加它,但收到的错误表明库中不支持类。
我在Commercify.DataAccess.Catalog中创建了以下dbContext:
public class CatalogDbContext: DbContext
{
public CatalogDbContext(DbContextOptions<CatalogDbContext> options)
: base(options)
{ }
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
optionsBuilder.UseSqlServer(@"Server=(local)\SQLEXPRESS;Database=Commercify;Trusted_Connection=True;");
}
public DbSet<CategoryEntity> Categories { get; set; }
}
现在我希望能够为我安装的迁移添加迁移: 在Commercify.WebApi中有以下程序集:
"dependencies": {
"Microsoft.NETCore.App": {
"version": "1.0.0",
"type": "platform"
},
...
"Microsoft.EntityFrameworkCore.Design": "1.0.0-preview2-final"
},
"tools": {
"Microsoft.EntityFrameworkCore.Tools": "1.0.0-preview2-final"
},
我现在想要的是添加一个迁移,为了做到这一点,我执行了以下操作:
dotnet ef migrations add Init
我收到以下错误:
在汇编&#39; Commercify.WebApi&#39;中找不到DbContext。确保您使用正确的程序集,并且该类型既不是抽象的也不是通用的。
我记得当使用dnx时你可以添加一个-p命令并将ef指向你的dbContext存在的项目,所以我尝试执行这个
dotnet ef migrations add Init -p Commercify.DataAccess.Catalog
我收到以下错误:
无法识别的选项&#39; -p&#39;
如何为不在启动项目中的dbContext执行迁移工具?
答案 0 :(得分:2)
据我所知,在RTM中执行此操作的唯一方法是从包含上下文的项目运行迁移。 本文概述了使其工作的过程。希望微软能尽快解决这个问题。
http://benjii.me/2016/06/entity-framework-core-migrations-for-class-library-projects/