C# 为什么DbSet的Find方法在播种方法期间并没有进入数据库以获取插入的值

C# 为什么DbSet的Find方法在播种方法期间并没有进入数据库以获取插入的值,c#,entity-framework,console-application,entity-framework-6.1,C#,Entity Framework,Console Application,Entity Framework 6.1,我有一个简单的种子方法: protected override void Seed(YourContext context) { var person = new Person() {Name = "SeededPerson", BirthDate = new DateTime(1900, 1, 1)}; context.Persons.Add(person); base.Seed(context); } 这已经运行了几次

我有一个简单的种子方法:

    protected override void Seed(YourContext context)
    {
        var person = new Person() {Name = "SeededPerson", BirthDate = new DateTime(1900, 1, 1)};
        context.Persons.Add(person);
        base.Seed(context);
    }
这已经运行了几次,但从那时起,我已经将数据库初始值设定项设置为Null os,不再使用它

        Database.SetInitializer<YourContext>(null); //Nothing is done
SQL探查器不返回任何内容

但是,如果我使用的是SingleOrDefault,我确实可以在SQL分析器中看到SELECT

我知道Find方法首先进入本地内存,但是由于Seed方法没有被调用,并且上下文只为两行代码创建,所以它不应该在内存中


为什么我在SQL探查器中看不到带有Find方法的查询?

您是否检查了Seed是否真的没有被调用,以及SetInitializer是否被调用,方法是在Seed中的那些行SetInitializer和第一行上设置断点?探查器不会显示Seed提供的任何查询。此外,即使是这样,上下文也是不同的,因为我正在从控制台应用程序为Find操作创建一个新的上下文。
        using (var context = new YourContext())
        {
            var person = context.Persons.Find(1);
            Console.WriteLine(person.Name);
        }