现在我正在致力于将现有项目从网络框架迁移到网络核心。当它看起来可以工作时,我遇到了一个奇怪的异常。所有地方都为数据库实体 PK 传递“-1”值,但它不适用于 ef core。下面是两个简单的再现测试。
// EF core test
[Test] // failed
public void Test1()
{
var options = new DbContextOptionsBuilder<ConsoleApp1.Context>()
.UseInMemoryDatabase(databaseName: "Data")
.ConfigureWarnings(x => x.Ignore(InMemoryEventId.TransactionIgnoredWarning))
.Options;
var context = new ConsoleApp1.Context(options);
context.Books.Add(new ConsoleApp1.Book { Id = -1 });
context.Books.Add(new ConsoleApp1.Book { Id = 0 });
context.Books.Add(new ConsoleApp1.Book { Id = -1 });
Assert.Pass();
}
// EF 6 test
[Test] // passed
public void Test2()
{
var context = new ConsoleApp2.Context();
context.Books.Add(new ConsoleApp2.Book { Id = -1 });
context.Books.Add(new ConsoleApp2.Book …Run Code Online (Sandbox Code Playgroud)