首先,我不能使用SQL Lite。其次,下面的代码给了我:
错误CS1061'DbContextOptionsBuilder'不包含'UseInMemoryDatabase'的定义,并且找不到扩展方法'UseInMemoryDatabase'接受类型为'DbContextOptionsBuilder'的第一个参数(是否缺少using指令或程序集引用?)
代码:
var options = new DbContextOptionsBuilder<ProductContext>()
.UseInMemoryDatabase(Guid.NewGuid().ToString())
.Options;
var context = new ProductContext(options);
语境
using Memory.Models;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.EntityFrameworkCore;
namespace Memory.Data
{
public class ProductContext : DbContext
{
public ProductContext(DbContextOptions<ProductContext> options) : base(options)
{
}
public DbSet<Category> Categories { get; set; }
public DbSet<Product> Products { get; set; }
}
}
我的项目CSPROJ文件
<ItemGroup>
<PackageReference Include="Microsoft.ApplicationInsights.AspNetCore" Version="2.0.0" />
<PackageReference Include="Microsoft.AspNetCore" Version="1.1.5" />
<PackageReference Include="Microsoft.AspNetCore.Mvc" Version="1.1.6" />
<PackageReference Include="Microsoft.AspNetCore.StaticFiles" Version="1.1.3" />
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="1.1.5" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="1.1.0" />
<PackageReference Include="Microsoft.Extensions.Logging.Debug" Version="1.1.2" />
<PackageReference Include="Microsoft.VisualStudio.Web.BrowserLink" Version="1.1.3" />
</ItemGroup>
<ItemGroup>
<DotNetCliToolReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Tools" Version="1.0.3" />
</ItemGroup>
确切的问题是该方法不可用。我似乎不明白为什么。我需要这个问题的启示。
根据EF Core:使用InMemory测试参考,您需要添加Microsoft.EntityFrameworkCore.InMemory包以将UseInMemoryDatabase()
扩展方法与结合使用DbContextOptionsBuilder
:
Install-Package Microsoft.EntityFrameworkCore.InMemory
之后,您可以按照以下“书写测试”部分中给出的示例进行操作:
var options = new DbContextOptionsBuilder<ProductContext>().UseInMemoryDatabase(databaseName: "database_name").Options;
using (var context = new ProductContext(options))
{
// add service here
}
非常感谢,这很有魅力。
cli命令是:
dotnet add package Microsoft.EntityFrameworkCore.InMemory