是否可以在applicationsettings.json文件中指定“ InMemory”数据库“连接字符串”(由于缺乏更好的用语)?
我希望能够使用InMemory进行开发,然后在无需更改代码的情况下转换已部署(测试,QA,产品)环境的连接。
我知道我可以使用条件语句进行检查,然后像-
var builder = new DbContextOptionsBuilder();
if(env.IsDevelopment())
{
builder.UseInMemoryDatabase("DevelopmentContext");
}
我只是好奇是否还有更多基于约定或基于api的方式。我什么都找不到。
答案 0 :(得分:0)
无法执行您要问的事情。它不能仅由连接字符串控制;例如,您必须使用内存提供程序或SQL Server提供程序,这意味着您必须在代码中分支。现在,您可以将提供程序配置为一个值,然后使用config值来确定是否使用内存提供程序还是生产提供程序,但这并不能为您提供任何使用IHostingEnvironment.IsDevelopment()
就能做到的东西
也就是说,即使在开发中也不应实际使用内存提供程序。那不是它的目的,并且不会像您想象的那样为您服务。存在用于测试的内存提供程序,其中的波动性不是问题,因为无论如何在每次测试后您都希望拆除并重建数据库。在开发中使用它不能使您可靠地将数据从一个请求持久保存到下一个请求,因此您会遇到各种各样的问题。
如果您想使用更简单的数据提供程序进行开发,则可以使用SQLite之类的东西。