entity frameworkCodeFirst延迟经历

我正在学习entity framework,我目前正面临一个问题,我花了大约10秒钟从数据库中检索数据或更新一行,好像我的代码实际上已经停留了一段时间,即使调试它一切很正常。

除了延迟之外,代码本身实际上按预期工作。

在Google上搜索,我在这里找不到与此问题相关的其他人与entity framework相关的问题。

我想也许这与我的CodeFirstMySQLEntities类构造函数有关,但不确定。

如果有人能为我提供指导,我将不胜感激。

这是主要代码:

 namespace CodeFirstMySQL { class Program { static void Main(string[] args) { UserRepository userRepository = new UserRepository(); userRepository.Update("Klein", "OtherName"); //delay experienced here Console.WriteLine("done"); Console.ReadLine(); } } } 

这是DbContext代码:

 namespace CodeFirstMySQL.Database { public class CodeFirstMySQLEntities : DbContext { public CodeFirstMySQLEntities() : base("CodeFirstMySQLEntities") { } public DbSet Users { get; set; } } } 

这是UserModel代码:

 namespace CodeFirstMySQL.Database.Models { public class UserModel { [Key, StringLength(100)] public string firstName { get; set; } [StringLength(100)] public string lastName { get; set; } } } 

这是存储库代码:

 namespace CodeFirstMySQL.Database.Repositories { public class UserRepository { public void Insert(UserModel user) { using (var context = new CodeFirstMySQLEntities()) { context.Users.Add(user); context.SaveChanges(); } } public void Delete(string firstName) { using (var context = new CodeFirstMySQLEntities()) { UserModel user = context.Users.FirstOrDefault(x => x.firstName == firstName); context.Users.Remove(user); context.SaveChanges(); } } public void Update(string lastNameOld, string lastNameNew) { using (var context = new CodeFirstMySQLEntities()) { UserModel user = context.Users.FirstOrDefault(x => x.lastName == lastNameOld); user.lastName = lastNameNew; context.SaveChanges(); } } public IList GetUsers() { using (var context = new CodeFirstMySQLEntities()) { return context.Set().ToList(); } } } } 

连接字符串:

    

延迟几乎肯定是由于entity framework启动时间所致。 您可以在退出代码之前尝试第二次更新来确认这一点。

以下摘录解释了正在发生的事情

模型缓存

发现模型,处理数据注释和应用流畅的API配置需要一些成本。 为了避免每次实例化派生的DbContext时产生此成本,在第一次初始化期间缓存模型。 每次在同一AppDomain中构造相同的派生上下文时,都会重新使用缓存的模型。