c# - 如何在 Asp.Net Core API 启动时将数据加载到 InMemory 数据库中?
问题描述
我正在研究 Asp.Net Core 3.1 API。我在 SQL Server 数据库中有几张表。
我正在尝试使用 InMemory 数据库,并尝试在应用程序启动时将数据加载到这些表中。
我写了下面的代码。
public partial class MyContext : DbContext
{
public MyContext ()
{
}
public MyContext (DbContextOptions<MyContext > options)
: base(options)
{
}
public virtual DbSet<TestEntity> TestEntity{ get; set; }
...
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
if (!optionsBuilder.IsConfigured)
{
optionsBuilder.UseInMemoryDatabase("name=RuleDB");
}
}
启动.cs
public void ConfigureServices(IServiceCollection services)
{
services.AddDbContext<MyContext>(opt => opt.UseInMemoryDatabase("myDbName"));
应用设置.json
"ConnectionStrings": {
"RuleDB": "Server=tcp:xyz.database.windows.net,1433;Initial Catalog=myDB;Persist Security Info=False;User ID=test;Password=****;MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30"
}
当我尝试做时context.TestEntity.ToList();
,它没有显示任何记录。
我基本上是在尝试在应用程序启动时将数据从我的 SQL Server 数据库加载到我的 InMemory 数据库中。
我是否遗漏了任何步骤,这不是一个好方法(我的意思是我应该使用 InMemory Cache 代替 InMemory 数据库)?
解决方案
根据您的代码片段,当应用程序启动时,我没有找到您将数据添加到内存数据库的位置。所以,我认为问题是相关的。
尝试将以下文章引用到数据库中的种子数据:
推荐阅读
- javascript - 连续文本框验证
- c# - 从一行中选择值 - RadGridView C#
- can-bus - 如何使用 CAPL 程序发送消息
- python - 如何在不分隔字符的情况下打印枚举列表(带有字符)
- c# - ASP.NET:将消息从控制器传递到视图(ViewBag、ViewData 或 TempData)
- php - 如何将动态变量从 PHP 语法转换为 twig
- typescript - Typescript - Morgan 和 logger.stream 导致 lint 错误
- java - Android搜索过滤器在没有结果时显示文本视图
- .net-core-2.1 - 如何将本机二进制文件打包为全局 dotnet 工具
- javascript - 幻灯片容器相同高度