我在EF代码的第一个场景中在表中插入一行,但是当我查看日志时,我可以看到4个不同的打开/关闭连接和相关的活动。
我认为,这是EF的默认行为。
有人可以告诉我更多关于这个???
var ninja = new Ninja
{
Name = "SampsonSan",
ServedInOniwaban = false,
DateOfBirth = new DateTime(2008, 1, 28),
ClanId = 1
};
using (var context = new NinjaContext())
{
context.Database.Log = Console.WriteLine;
context.Ninjas.Add(ninja);
context.SaveChanges();
}
日志
1。已于2015年10月3日上午11:18:45 +05:30
打开连接SELECT Count(*)
FROM INFORMATION_SCHEMA.TABLES AS t
WHERE t.TABLE_SCHEMA + '.' + t.TABLE_NAME IN ('dbo.Clans','dbo.NinjaEquipments','dbo.Ninjas')
OR t.TABLE_NAME = 'EdmMetadata'
- 执行时间为2015年10月3日上午11:18:45 +05:30
- 在12毫秒内完成,结果为:3 2015年10月3日上午11:18:45 +05:30
2。已于2015年10月3日上午11:18:46 +05:30
打开连接 SELECT
[GroupBy1].[A1] AS [C1]
FROM ( SELECT
COUNT(1) AS [A1]
FROM [dbo].[__MigrationHistory] AS [Extent1]
WHERE [Extent1].[ContextKey] = @p__linq__0
) AS [GroupBy1]
- p__linq__0:' DataModel.Migrations.Configuration' (Type = String,Size = 4000)
- 执行时间为2015年10月3日上午11:18:47 +05:30
- 在34 ms内完成,结果为:SqlDataReader 2015年10月3日上午11:18:47 +05:30
关闭连接第3。已于2015年10月3日上午11:18:47 +05:30
打开连接SELECT TOP (1)
[Project1].[C1] AS [C1],
[Project1].[MigrationId] AS [MigrationId],
[Project1].[Model] AS [Model],
[Project1].[ProductVersion] AS [ProductVersion]
FROM ( SELECT
[Extent1].[MigrationId] AS [MigrationId],
[Extent1].[Model] AS [Model],
[Extent1].[ProductVersion] AS [ProductVersion],
1 AS [C1]
FROM [dbo].[__MigrationHistory] AS [Extent1]
WHERE [Extent1].[ContextKey] = @p__linq__0
) AS [Project1]
ORDER BY [Project1].[MigrationId] DESC
- p__linq__0:' DataModel.Migrations.Configuration' (Type = String,Size = 4000)
- 执行时间为2015年10月3日上午11:18:47 +05:30
- 在25毫秒内完成,结果为:SqlDataReader
2015年10月3日上午11:18:47 +05:30
关闭连接4。已于2015年10月3日上午11:18:47 +05:30
打开连接于2015年10月3日上午11:18:47 +05:30开始交易
INSERT [dbo].[Ninjas]([Name], [ServedInOniwaban], [ClanId], [DateOfBirth])
VALUES (@0, @1, @2, @3)
SELECT [Id]
FROM [dbo].[Ninjas]
WHERE @@ROWCOUNT > 0 AND [Id] = scope_identity()
- @ 0:' SampsonSan' (Type = String,Size = -1)
- @ 1:'错误' (Type = Boolean)
- @ 2:' 1' (Type = Int32)
- @ 3:' 1/28/2008 12:00:00 AM' (Type = DateTime2)
- 执行时间为2015年10月3日上午11:18:47 +05:30
- 在131毫秒内完成,结果为:SqlDataReader
承诺交易于2015年10月3日上午11:18:48 +05:30
2015年10月3日上午11:18:48 +05:30
关闭连接