繁体   English   中英

在ASP.NET 5应用程序的内存存储中添加

[英]Add in memory store for ASP.NET 5 application

我正在尝试为ASP.NET 5应用程序添加一个内存存储区。

public void ConfigureServices(IServiceCollection services)
{
    services.AddMvc();

    services.AddEntityFramework()
        .AddInMemoryStore()
        .AddDbContext<MyDbContext>();
}

虽然出现以下错误:

$ dnx . kestrel
* Assertion at loader.c:1189, condition `!mono_loader_get_last_error ()' not met

Stacktrace:

  at <unknown> <0xffffffff>
  at Nalie.Startup.ConfigureServices (Microsoft.Framework.DependencyInjection.IServiceCollection) <0x0003a>
  at (wrapper runtime-invoke) <Module>.runtime_invoke_void__this___object (object,intptr,intptr,intptr) <0xffffffff>
  at <unknown> <0xffffffff>
  at (wrapper managed-to-native) System.Reflection.MonoMethod.InternalInvoke (System.Reflection.MonoMethod,object,object[],System.Exception&) <0xffffffff>
* Assertion at loader.c:1912, condition `!mono_loader_get_last_error ()' not met

Abort trap: 6

您需要更新AddDbContext调用以指定要使用的提供程序。

AddDbContext<MyDbContext>(options => options.UseInMemoryDatabase());

AddInMemory的调用只是建立了DI中该数据存储所需的服务,但是您仍然需要告诉上下文要使用哪个提供程序。 如果您看到更复杂的内容,这将变得更加清晰。

services.AddEntityFramework() .AddInMemoryStore() .AddSqlServer() .AddDbContext<MyDbContext>(options => options.UseInMemroryDatabase()) .AddDbContext<MyOtherDbContext>(options => options.UseSqlServer("<connection string>"));

InMemory有点独特,因为它不需要使用任何配置(与其他需要连接字符串的提供程序不同)。 因此,我们确实考虑过,如果InMemory是唯一注册的提供程序,则默认情况下将其默认选中。但是,这似乎非常特殊,只会妨碍人们了解事物的工作方式。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM