gpt4 book ai didi

c# - Entity Framework 代码优先遇到延迟

转载 作者:行者123 更新时间:2023-12-02 00:36:04 24 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; }
}
}

这是用户模型代码:

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>

最佳答案

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

The following excerpt explains what is going on

Model Caching

There is some cost involved in discovering the model, processing Data Annotations and applying fluent API configuration. To avoid incurring this cost every time a derived DbContext is instantiated the model is cached during the first initialization. The cached model is then re-used each time the same derived context is constructed in the same AppDomain.

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

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