2017-06-15 3 views
0

私はコードの部分を持っています... ...。さて、同じコードが痛いほど遅いです。場合によっては10-15秒まで完了することもあります。バックグラウンドで起こっていた出力に... ...TryUpdateModelAsyncオープンをして閉じ、接続1000年の倍

DB.ITConsole.Database.Log = s => System.Diagnostics.Debug.WriteLine(s); 

を使用して

は、私はこの方法は、文字通り、数千回のデータベースを開いたり閉じたりしていることが分かりました。 "IT_Task"レコードがあるのと同じくらい何回もあると私には思われました。おそらくもっと。以下の出力の小さなサンプル...

何が起こっているのですか?ビューコレクションから更新されたモデルのレコードを取得するにはどうすればよいですか?

Opened connection at 15/06/2017 16:59:40 +01:00 

SELECT 
    [Extent1].[Project_Note_ID] AS [Project_Note_ID], 
    [Extent1].[Project_ID] AS [Project_ID], 
    [Extent1].[Date_Entered] AS [Date_Entered], 
    [Extent1].[Entered_By_ID] AS [Entered_By_ID], 
    [Extent1].[Description] AS [Description] 
    FROM [dbo].[IT_Project_Note] AS [Extent1] 
    WHERE [Extent1].[Project_ID] = @EntityKeyValue1 


-- EntityKeyValue1: "164" (Type = Int32, IsNullable = false) 

-- Executing at 15/06/2017 16:59:40 +01:00 

-- Completed in 0 ms with result: SqlDataReader 



Closed connection at 15/06/2017 16:59:40 +01:00 

Opened connection at 15/06/2017 16:59:40 +01:00 

SELECT 
    [Extent1].[Task_ID] AS [Task_ID], 
    [Extent1].[Entered_By_ID] AS [Entered_By_ID], 
    [Extent1].[Reported_By_ID] AS [Reported_By_ID], 
    [Extent1].[NAB_ID] AS [NAB_ID], 
    [Extent1].[Project_ID] AS [Project_ID], 
    [Extent1].[Description] AS [Description], 
    [Extent1].[Task_Category_ID] AS [Task_Category_ID], 
    [Extent1].[Task_Type_ID] AS [Task_Type_ID], 
    [Extent1].[Task_Status_ID] AS [Task_Status_ID], 
    [Extent1].[Task_Priority_ID] AS [Task_Priority_ID], 
    [Extent1].[Task_Severity_ID] AS [Task_Severity_ID], 
    [Extent1].[Date_Entered] AS [Date_Entered], 
    [Extent1].[Date_Due] AS [Date_Due] 
    FROM [dbo].[IT_Task] AS [Extent1] 
    WHERE [Extent1].[Project_ID] = @EntityKeyValue1 


-- EntityKeyValue1: "164" (Type = Int32, IsNullable = false) 

-- Executing at 15/06/2017 16:59:40 +01:00 

-- Completed in 0 ms with result: SqlDataReader 



Closed connection at 15/06/2017 16:59:40 +01:00 

Opened connection at 15/06/2017 16:59:40 +01:00 

SELECT 
    [Extent1].[Project_Note_ID] AS [Project_Note_ID], 
    [Extent1].[Project_ID] AS [Project_ID], 
    [Extent1].[Date_Entered] AS [Date_Entered], 
    [Extent1].[Entered_By_ID] AS [Entered_By_ID], 
    [Extent1].[Description] AS [Description] 
    FROM [dbo].[IT_Project_Note] AS [Extent1] 
    WHERE [Extent1].[Project_ID] = @EntityKeyValue1 


-- EntityKeyValue1: "203" (Type = Int32, IsNullable = false) 

-- Executing at 15/06/2017 16:59:40 +01:00 

-- Completed in 0 ms with result: SqlDataReader 



Closed connection at 15/06/2017 16:59:40 +01:00 

Opened connection at 15/06/2017 16:59:40 +01:00 

SELECT 
    [Extent1].[Task_ID] AS [Task_ID], 
    [Extent1].[Entered_By_ID] AS [Entered_By_ID], 
    [Extent1].[Reported_By_ID] AS [Reported_By_ID], 
    [Extent1].[NAB_ID] AS [NAB_ID], 
    [Extent1].[Project_ID] AS [Project_ID], 
    [Extent1].[Description] AS [Description], 
    [Extent1].[Task_Category_ID] AS [Task_Category_ID], 
    [Extent1].[Task_Type_ID] AS [Task_Type_ID], 
    [Extent1].[Task_Status_ID] AS [Task_Status_ID], 
    [Extent1].[Task_Priority_ID] AS [Task_Priority_ID], 
    [Extent1].[Task_Severity_ID] AS [Task_Severity_ID], 
    [Extent1].[Date_Entered] AS [Date_Entered], 
    [Extent1].[Date_Due] AS [Date_Due] 
    FROM [dbo].[IT_Task] AS [Extent1] 
    WHERE [Extent1].[Project_ID] = @EntityKeyValue1 


-- EntityKeyValue1: "203" (Type = Int32, IsNullable = false) 

-- Executing at 15/06/2017 16:59:40 +01:00 

-- Completed in 0 ms with result: SqlDataReader 



Closed connection at 15/06/2017 16:59:40 +01:00 

Opened connection at 15/06/2017 16:59:40 +01:00 

SELECT 
    [Extent1].[Task_Note_ID] AS [Task_Note_ID], 
    [Extent1].[Task_ID] AS [Task_ID], 
    [Extent1].[Description] AS [Description], 
    [Extent1].[Entered_By_ID] AS [Entered_By_ID], 
    [Extent1].[Date_Entered] AS [Date_Entered], 
    [Extent1].[CC_User] AS [CC_User] 
    FROM [dbo].[IT_Task_Note] AS [Extent1] 
    WHERE [Extent1].[Task_ID] = @EntityKeyValue1 


-- EntityKeyValue1: "15669" (Type = Int32, IsNullable = false) 

-- Executing at 15/06/2017 16:59:40 +01:00 

-- Completed in 0 ms with result: SqlDataReader 



Closed connection at 15/06/2017 16:59:40 +01:00 

Opened connection at 15/06/2017 16:59:40 +01:00 

SELECT 
    [Extent1].[Project_Note_ID] AS [Project_Note_ID], 
    [Extent1].[Project_ID] AS [Project_ID], 
    [Extent1].[Date_Entered] AS [Date_Entered], 
    [Extent1].[Entered_By_ID] AS [Entered_By_ID], 
    [Extent1].[Description] AS [Description] 
    FROM [dbo].[IT_Project_Note] AS [Extent1] 
    WHERE [Extent1].[Project_ID] = @EntityKeyValue1 


-- EntityKeyValue1: "235" (Type = Int32, IsNullable = false) 

-- Executing at 15/06/2017 16:59:40 +01:00 

-- Completed in 0 ms with result: SqlDataReader 



Closed connection at 15/06/2017 16:59:40 +01:00 

Opened connection at 15/06/2017 16:59:40 +01:00 

SELECT 
    [Extent1].[Task_ID] AS [Task_ID], 
    [Extent1].[Entered_By_ID] AS [Entered_By_ID], 
    [Extent1].[Reported_By_ID] AS [Reported_By_ID], 
    [Extent1].[NAB_ID] AS [NAB_ID], 
    [Extent1].[Project_ID] AS [Project_ID], 
    [Extent1].[Description] AS [Description], 
    [Extent1].[Task_Category_ID] AS [Task_Category_ID], 
    [Extent1].[Task_Type_ID] AS [Task_Type_ID], 
    [Extent1].[Task_Status_ID] AS [Task_Status_ID], 
    [Extent1].[Task_Priority_ID] AS [Task_Priority_ID], 
    [Extent1].[Task_Severity_ID] AS [Task_Severity_ID], 
    [Extent1].[Date_Entered] AS [Date_Entered], 
    [Extent1].[Date_Due] AS [Date_Due] 
    FROM [dbo].[IT_Task] AS [Extent1] 
    WHERE [Extent1].[Project_ID] = @EntityKeyValue1 


-- EntityKeyValue1: "235" (Type = Int32, IsNullable = false) 

-- Executing at 15/06/2017 16:59:40 +01:00 

-- Completed in 0 ms with result: SqlDataReader 



Closed connection at 15/06/2017 16:59:40 +01:00 

Opened connection at 15/06/2017 16:59:40 +01:00 

SELECT 
    [Extent1].[Project_Note_ID] AS [Project_Note_ID], 
    [Extent1].[Project_ID] AS [Project_ID], 
    [Extent1].[Date_Entered] AS [Date_Entered], 
    [Extent1].[Entered_By_ID] AS [Entered_By_ID], 
    [Extent1].[Description] AS [Description] 
    FROM [dbo].[IT_Project_Note] AS [Extent1] 
    WHERE [Extent1].[Project_ID] = @EntityKeyValue1 


-- EntityKeyValue1: "243" (Type = Int32, IsNullable = false) 

-- Executing at 15/06/2017 16:59:40 +01:00 

-- Completed in 0 ms with result: SqlDataReader 



Closed connection at 15/06/2017 16:59:40 +01:00 

Opened connection at 15/06/2017 16:59:40 +01:00 

SELECT 
    [Extent1].[Task_ID] AS [Task_ID], 
    [Extent1].[Entered_By_ID] AS [Entered_By_ID], 
    [Extent1].[Reported_By_ID] AS [Reported_By_ID], 
    [Extent1].[NAB_ID] AS [NAB_ID], 
    [Extent1].[Project_ID] AS [Project_ID], 
    [Extent1].[Description] AS [Description], 
    [Extent1].[Task_Category_ID] AS [Task_Category_ID], 
    [Extent1].[Task_Type_ID] AS [Task_Type_ID], 
    [Extent1].[Task_Status_ID] AS [Task_Status_ID], 
    [Extent1].[Task_Priority_ID] AS [Task_Priority_ID], 
    [Extent1].[Task_Severity_ID] AS [Task_Severity_ID], 
    [Extent1].[Date_Entered] AS [Date_Entered], 
    [Extent1].[Date_Due] AS [Date_Due] 
    FROM [dbo].[IT_Task] AS [Extent1] 
    WHERE [Extent1].[Project_ID] = @EntityKeyValue1 


-- EntityKeyValue1: "243" (Type = Int32, IsNullable = false) 

-- Executing at 15/06/2017 16:59:40 +01:00 

-- Completed in 0 ms with result: SqlDataReader 



Closed connection at 15/06/2017 16:59:40 +01:00 

Opened connection at 15/06/2017 16:59:40 +01:00 

SELECT 
    [Extent1].[Project_Note_ID] AS [Project_Note_ID], 
    [Extent1].[Project_ID] AS [Project_ID], 
    [Extent1].[Date_Entered] AS [Date_Entered], 
    [Extent1].[Entered_By_ID] AS [Entered_By_ID], 
    [Extent1].[Description] AS [Description] 
    FROM [dbo].[IT_Project_Note] AS [Extent1] 
    WHERE [Extent1].[Project_ID] = @EntityKeyValue1 


-- EntityKeyValue1: "257" (Type = Int32, IsNullable = false) 

-- Executing at 15/06/2017 16:59:40 +01:00 

-- Completed in 0 ms with result: SqlDataReader 



Closed connection at 15/06/2017 16:59:40 +01:00 

Opened connection at 15/06/2017 16:59:40 +01:00 

SELECT 
    [Extent1].[Task_ID] AS [Task_ID], 
    [Extent1].[Entered_By_ID] AS [Entered_By_ID], 
    [Extent1].[Reported_By_ID] AS [Reported_By_ID], 
    [Extent1].[NAB_ID] AS [NAB_ID], 
    [Extent1].[Project_ID] AS [Project_ID], 
    [Extent1].[Description] AS [Description], 
    [Extent1].[Task_Category_ID] AS [Task_Category_ID], 
    [Extent1].[Task_Type_ID] AS [Task_Type_ID], 
    [Extent1].[Task_Status_ID] AS [Task_Status_ID], 
    [Extent1].[Task_Priority_ID] AS [Task_Priority_ID], 
    [Extent1].[Task_Severity_ID] AS [Task_Severity_ID], 
    [Extent1].[Date_Entered] AS [Date_Entered], 
    [Extent1].[Date_Due] AS [Date_Due] 
    FROM [dbo].[IT_Task] AS [Extent1] 
    WHERE [Extent1].[Project_ID] = @EntityKeyValue1 


-- EntityKeyValue1: "257" (Type = Int32, IsNullable = false) 

-- Executing at 15/06/2017 16:59:40 +01:00 

-- Completed in 0 ms with result: SqlDataReader 



Closed connection at 15/06/2017 16:59:40 +01:00 

Opened connection at 15/06/2017 16:59:40 +01:00 

SELECT 
    [Extent1].[Project_Note_ID] AS [Project_Note_ID], 
    [Extent1].[Project_ID] AS [Project_ID], 
    [Extent1].[Date_Entered] AS [Date_Entered], 
    [Extent1].[Entered_By_ID] AS [Entered_By_ID], 
    [Extent1].[Description] AS [Description] 
    FROM [dbo].[IT_Project_Note] AS [Extent1] 
    WHERE [Extent1].[Project_ID] = @EntityKeyValue1 


-- EntityKeyValue1: "285" (Type = Int32, IsNullable = false) 

-- Executing at 15/06/2017 16:59:40 +01:00 

-- Completed in 0 ms with result: SqlDataReader 



Closed connection at 15/06/2017 16:59:40 +01:00 

Opened connection at 15/06/2017 16:59:40 +01:00 

SELECT 
    [Extent1].[Task_ID] AS [Task_ID], 
    [Extent1].[Entered_By_ID] AS [Entered_By_ID], 
    [Extent1].[Reported_By_ID] AS [Reported_By_ID], 
    [Extent1].[NAB_ID] AS [NAB_ID], 
    [Extent1].[Project_ID] AS [Project_ID], 
    [Extent1].[Description] AS [Description], 
    [Extent1].[Task_Category_ID] AS [Task_Category_ID], 
    [Extent1].[Task_Type_ID] AS [Task_Type_ID], 
    [Extent1].[Task_Status_ID] AS [Task_Status_ID], 
    [Extent1].[Task_Priority_ID] AS [Task_Priority_ID], 
    [Extent1].[Task_Severity_ID] AS [Task_Severity_ID], 
    [Extent1].[Date_Entered] AS [Date_Entered], 
    [Extent1].[Date_Due] AS [Date_Due] 
    FROM [dbo].[IT_Task] AS [Extent1] 
    WHERE [Extent1].[Project_ID] = @EntityKeyValue1 


-- EntityKeyValue1: "285" (Type = Int32, IsNullable = false) 

-- Executing at 15/06/2017 16:59:40 +01:00 

-- Completed in 0 ms with result: SqlDataReader 



Closed connection at 15/06/2017 16:59:40 +01:00 

アップデート - TryUpdateModelAsyncを使って何をしようとしていますか?

私の知る限り、TryUpdateModelAsyncは1つのことだけを行います。私が間違っていたら謝ります。

データベースの特定のレコードに基づいてモデルを作成し、そのページのドロップダウンなどのサポート資料を作成し、GETフェーズで編集用にページに送りました。その後POST段階で、同じレコードに基づいて別の(同じ)モデルを作成します。

TryUpdateModelAsyncは、返信POSTからデータを取得し、元のレコードをそのデータで更新してから保存できるようにするためのものです。

私は実際に、これらの2つのデータセットをマージするためにデータベースを全く見ないというプロセスを期待していませんでした。私は、SaveChangesでデータベースへのアクセスが期待されるだけです。

+0

お読みください[タグを使用する方法](https://でのstackoverflow .com/help/tagging)。質問を投稿する前に、なぜタグをタイトルに入れるべきではなく、質問をするときに正しいタグを使用してください。あなたが実際に[tag:entityframework-core]について質問したときに[tag.entity-framework]という質問にタグを付けることで、回答が少なくても正しくない場合もあります。 – Tseng

+0

占いのスキルが不足している場合は、あなたの 'TryUpdateModelAsync'メソッドが何をしているのか、あなたが使っているデータベースプロバイダがわからないときはどうすればいいですか? – Tseng

+0

これは実際にEF6の問題であり、EFCore – Smit

答えて

0

TryUpdateModelAsyncが長すぎて返されていたのと同じ問題が発生していました。問題は、データベースオブジェクトのすべてのサブコレクションを反復しようとしていることで、EF6は途中ですべてを遅延読み込みしていたことがわかりました。私はこれを行うことにより、データベースからの私の物を持って前に遅延ロードをオフにすることで動作するようになったので、これはケースのように登場:

_database.Configuration.LazyLoadingEnabled = false; 
関連する問題