每当我打开数据库连接时,与数据库的第一次交互都需要花费很多时间。从第二次互动开始,"速度"要高得多。我认为它是实体框架的优化,看起来好像很好。但即使我使用多个数据库,它仍然是一样的。与第一个数据库的第一次交互很慢。但第一次与第二个数据库的交互很快。为什么第一次与另一个数据库的交互也不慢?另一个问题是初始化程序仅适用于第一个数据库。 (我认为这个问题是由这种优化引起的)
与此问题相关(我自己问): Entity Framework 6 SetInitializer DbContext does not work for SQL Server Express and SQL Server Compact
是否有人知道此优化的工作原理以及如何禁用它?我实际上并没有使用我比较它们的数据库,对于这种情况,禁用任何优化都会很好。
答案 0 :(得分:1)
我写了一个答案,因为评论不合适。
速度Yuliam向你指出了良好的联系。
其余的,我不确定你的问题。
对我来说,以下代码(相关摘录)
class Program {
static void Main(string[] args) {
Database.SetInitializer<TestEFContext>(new DropCreateDatabaseAlways<TestEFContext>());
String cs = @"Data Source=ALIASTVALK;Initial Catalog=TestEF;Integrated Security=True; MultipleActiveResultSets=True";
using (TestEFContext ctx = new TestEFContext(cs)) {
Console.WriteLine(ctx.Orders.Count());
}
cs = @"Data Source=ALIASTVALK;Initial Catalog=TestEF2;Integrated Security=True; MultipleActiveResultSets=True";
using (TestEFContext ctx = new TestEFContext(cs)) {
Console.WriteLine(ctx.Orders.Count());
}
}
}
很好地创建并重新创建数据库TestEF和TestEF2。
我误解了你的问题吗?
=====对评论的回应:
在这种情况下,始终(重新)创建两个数据库:
与您的案例只有微不足道的差异:我使用EF 6;