C# NET MVC在种子数据和真实数据之间切换
在NETMVCCore2中,VisualStudio中是否有一种方法可以在人工内存种子数据和真实测试环境sql连接之间切换?我们正在两个环境之间不断进行测试 这是如何从源代码创建人工数据:“Pro ASP.NET核心MVC 2,Freeman”。 要在种子数据之间切换,我必须删除所有这些,然后在Application.json中再次添加一个真正的连接字符串,我试图阻止删除/添加代码。目前MVC初学者,仅编程几个月,所以尝试学习。多谢各位 创建种子数据C# NET MVC在种子数据和真实数据之间切换,c#,asp.net-mvc,entity-framework,asp.net-core,C#,Asp.net Mvc,Entity Framework,Asp.net Core,在NETMVCCore2中,VisualStudio中是否有一种方法可以在人工内存种子数据和真实测试环境sql连接之间切换?我们正在两个环境之间不断进行测试 这是如何从源代码创建人工数据:“Pro ASP.NET核心MVC 2,Freeman”。 要在种子数据之间切换,我必须删除所有这些,然后在Application.json中再次添加一个真正的连接字符串,我试图阻止删除/添加代码。目前MVC初学者,仅编程几个月,所以尝试学习。多谢各位 创建种子数据 new Product { Name = "
new Product {
Name = "Kayak", Description = "A boat for one person",
Category = "Watersports", Price = 275 },
new Product {
Name = "Lifejacket",
Description = "Protective and fashionable",
Category = "Watersports", Price = 48.95m },
然后在Startup.cs中
public void ConfigureServices(...
services.AddTransient<IProductRepository, EFProductRepository>();
public void Configure(...
SeedData.EnsurePopulated(app);
public void配置服务(。。。
services.AddTransient();
公共无效配置(。。。
种子数据。重新填充(app);
您正在寻找的功能位于EF Core中。它是.UseInMemoryDatabase选项:
public TestDbContext Context => InMemoryContext();
private TestDbContext InMemoryContext()
{
var options = new DbContextOptionsBuilder<TestDbContext>()
.UseInMemoryDatabase(Guid.NewGuid().ToString())
.EnableSensitiveDataLogging()
.Options;
var context = new TestDbContext(options);
return context;
publictestdbcontext=>InMemoryContext();
MemoryContext()中的私有TestDbContext
{
var options=new DbContextOptionsBuilder()
.UseInMemoryDatabase(Guid.NewGuid().ToString())
.EnableSensitiveDataLogging()
.选择;
var context=newtestdbcontext(选项);
返回上下文;
}
此博客将填补空白:为了自动切换连接字符串,您需要使用基于环境的配置。然后,根据您的环境变量,您的应用程序将读取不同的值。
查看此答案以了解更多详细信息:您不能读取文件吗?有没有办法在真正的测试数据库连接之间切换?无需编写和删除代码,我正在寻找Visual Studio参数环境配置按钮或下拉列表?谢谢,我在编写单元测试时使用了上述项目,非常熟悉你能给出一个代码示例来修改种子库中的环境变量吗?通常stackover更喜欢url链接的答案,谢谢,我正在研究如何修改代码