我有一个无法解决的怪异问题。我有一个使用EF Core的ASP.NET MVC Core 2应用程序。我有一个触发动作方法的按钮。单击该按钮,它将重定向到单击另一个按钮的视图,该视图将执行一些数据库操作并将我带回到原始页面。
在该方法中,我仅使用ApplicationDbContext
:
MyEntry myEntry = _db.MyEntries.FirstOrDefault(e => e.MyProperty == myValue);
问题是,当我多次走那条路时,它会起作用。并且它停止了第八次调用,始终是同一行(正在执行数据库),突然开始大约需要半分钟。
当我修改代码(例如,将一些数据库代码移到循环外,创建集合然后在循环内使用)时,它会在另一时间停止工作-在执行相同的次数后,总是同一行代码,但是一个不同的地方。
任何想法可能有什么问题吗?
我只是在控制器中使用数据库:
private readonly ApplicationDbContext _database;
public MyController(ApplicationDbContext database)
{
_database = database;
}
ApplicationDbContext
是:
public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
谢谢!
答案 0 :(得分:0)
感觉MyEntry实体需要一个密钥:
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
modelBuilder.Entity<MyEntry>()
.HasKey(b => new { b.Id, b.MyProperty});
}