gpt4 book ai didi

c# - Entity Framework 代码第一次延迟

转载 作者:行者123 更新时间:2023-12-02 00:36:04 25 4
gpt4 key购买 nike

我正在学习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<UserModel> 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<UserModel> GetUsers()
{
using (var context = new CodeFirstMySQLEntities())
{
return context.Set<UserModel>().ToList();
}
}
}
}


连接字符串:

<connectionStrings>
<add name="CodeFirstMySQLEntities" connectionString="Server=localhost; Database=CodeFirst; Uid=root; Pwd=" providerName="MySql.Data.MySqlClient"/>
</connectionStrings>

最佳答案

延迟几乎可以肯定是由于实体框架启动所需的时间。您可以在退出代码之前尝试第二次更新来确认这一点。
The following excerpt explains what is going on

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

关于c# - Entity Framework 代码第一次延迟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15507067/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com