C# 使用MemoryDatabase并保留集合

C# 使用MemoryDatabase并保留集合,c#,entity-framework,C#,Entity Framework,如何使添加到inmemory集合中的项立即可访问,就像使用普通db支持的数据库上下文一样 // Init var builder = new DbContextOptionsBuilder<MyContext>(); builder.UseInMemoryDatabase("my_in_memory"); this.InMemoryDbContext = new MyContext(builder.Options); // Setup InMemoryDbC

如何使添加到inmemory集合中的项立即可访问,就像使用普通db支持的数据库上下文一样

// Init

var builder = new DbContextOptionsBuilder<MyContext>();
builder.UseInMemoryDatabase("my_in_memory");
this.InMemoryDbContext = new MyContext(builder.Options);

// Setup

InMemoryDbContext.SomeCollection.Add(itemOfMatchingType);

// Assert (1) --< it fails 
Assert.AreEqual(1, InMemoryDbContext.SomeCollection.Count());

// Another assert (2) <-- now it works
InMemoryDbContext.SaveChanges();
Assert.AreEqual(1, InMemoryDbContext.SomeCollection.Count());
//初始化
var builder=new DbContextOptionsBuilder();
builder.UseInMemoryDatabase(“我的内存”);
this.InMemoryDbContext=新的MyContext(builder.Options);
//设置
InMemoryDbContext.SomeCollection.Add(itemOfMatchingType);
//断言(1)——它失败了
AreEqual(1,InMemoryDbContext.SomeCollection.Count());

//另一个断言(2)使用SQLite和最新的EF核心测试,第一个断言使用db支持的DatabaseContext。如果要断言添加到当前上下文中的内容,则需要分析
ChangeTracker

Assert.AreEqual(1, InMemoryDbContext.ChangeTracker.Entries<MatchingType>().Count());
Assert.AreEqual(1,InMemoryDbContext.ChangeTracker.Entries().Count());

您到底想断言什么?谢谢。我的印象是,在数据库支持的数据库中,这个断言不会失败。@Alex很高兴它能帮上忙!