我有一个Host类
namespace Trivia.Models
{
public class Host
{
public int Id { get; set; }
public string Name { get; set; }
public int SettingId { get; set; }
//public HostSetting Setting { get; set; }
}
}
上下文
using Microsoft.EntityFrameworkCore;
namespace Trivia.Models
{
public class TriviaDbContext : DbContext
{
public TriviaDbContext(DbContextOptions<TriviaDbContext> options)
: base(options)
{
}
public DbSet<Host> Host { get; set; }
}
}
以下行添加到ConfigureServices方法的类Startup
services.AddDbContext<TriviaDbContext>(options =>
options.UseSqlite("Data Source=Trivia.db"));
运行以下命令
dotnet aspnet-codegenerator controller -name HostsController -m Host -dc TriviaDbContext --relativeFolderPath控制器--useDefaultLayout --referenceScriptLibraries
给出以下错误
构建项目......查找生成器&#39;控制器&#39; ...运行 generator&#39; controller&#39; ...尝试编译应用程序 记忆。试图弄清楚EntityFramework的元数据 model和DbContext:&#39; Host&#39; : Microsoft.AspNetCore.DataProtection.KeyManagement.XmlKeyManager [0] 用户个人资料可用。使用&#39; /Users/path/.aspnet/DataProtection-Keys'作为密钥库; 密钥在休息时不会被加密。多个DbContext命名 &#39; Trivia.Models.TriviaDbContext&#39;被找到。指定要使用的是哪一个 使用其确切的案例提供其完全限定的名称。堆栈跟踪:
在 Microsoft.EntityFrameworkCore.Design.Internal.DbContextOperations.FindContextType(字符串 姓名)at Microsoft.EntityFrameworkCore.Design.Internal.DbContextOperations.CreateContext(字符串 contextType)at Microsoft.VisualStudio.Web.CodeGeneration.EntityFrameworkCore.EntityFrameworkModelProcessor.TryCreateContextUsingAppCode(类型 dbContextType,Type startupType)多个DbContext名为&#39; Trivia.Models.TriviaDbContext&#39;是 找到。通过提供其完全限定名称来指定要使用的名称 使用其确切的情况。在 Microsoft.VisualStudio.Web.CodeGeneration.ActionInvoker.b__6_0() 在 Microsoft.Extensions.CommandLineUtils.CommandLineApplication.Execute(字符串[] args)at Microsoft.VisualStudio.Web.CodeGeneration.ActionInvoker.Execute(字符串[] args)at Microsoft.VisualStudio.Web.CodeGeneration.CodeGenCommand.Execute(字符串[] args)RunTime 00:00:11.61
我没有多个数据库上下文。
我的program.cs文件
public class Program
{
public static void Main(string[] args)
{
BuildWebHost(args).Run();
}
public static IWebHost BuildWebHost(string[] args) =>
WebHost.CreateDefaultBuilder(args)
//.UseStartup<Startup>()
.UseStartup(typeof(Startup).Assembly.FullName)
.Build();
}
取消注释// .UseStartup()使应用程序正常工作。
我仍然希望应用程序根据我的环境使用StartupDevelopment,并使用dotnet aspen-codegenerator工作。
答案 0 :(得分:0)
不使用StartupDevelopment,而是使用ConfigureDevelopmentServices并在那里设置环境
$color-map: (
'b': #000,
'f': orange,
's': darken(#{f}, 50%), //not working, any ideas?
);
优势
这种方法比在ConfigureServices方法中使用if / else条件要好得多。
答案 1 :(得分:0)
像我这样指定上下文。在dotnetcore 3.0中
dotnet ef migrations add IntialCreate --project .\Persistence\ -s .\API\ --context DataContext