2014-02-18 2 views
1

Entity Framework (V5)에서 생성 된 생성 된 SQL 명령에 전달 된 매개 변수 (바인딩 변수)를 보려면 어떻게합니까?Entity Framework (5) 생성 된 SQL에 전달 된 매개 변수보기

public IEnumerable<SearchItem> Search(string searchTerm) 
{ 
    return DbSet.Where(p => p.ItemId.Contains(searchTerm)).ToList(); 
} 

은 위의 코드는 다음과 같은 SQL을 생성하고 바인드 변수 __linq__0

SELECT 
    "Extent1"."ITEM" AS "ITEM", 
FROM "TableName" "Extent1" 
WHERE UPPER("Extent1"."ITEM") LIKE :p__linq__0 

가 어떻게 디버깅하고 디버깅 할 때이 바인드 변수의 값을 보려면 어떻게해야합니까 포함? 추적을 사용하도록 제안하는 답변을 보았지만 Visual Studio 디버거에서 이러한 값을 확인하는 방법이 있어야합니다.

감사합니다.

답변

0

밑줄 명령, 연결 개체에 액세스해야합니다. EF 소스 코드를 다운로드하면 액세스 할 수 있습니다. EF는 모든 것을 당신을 위해 싸 웁니다. EF Codebase

+0

감사합니다 아래에 게시 된 링크의 예입니다 다른 대안이 없다면 이것에 대해 살펴보십시오. – philreed

0

당신이 엔티티 프레임 워크 (6)을 사용하는 경우에는 차단/SQL 로깅 여기

를 사용할 수 있습니다 나는거야,

using (var context = new BlogContext()) 
{ 
    context.Database.Log = Console.Write; 

    var blog = context.Blogs.First(b => b.Title == "One Unicorn"); 

    blog.Posts.First().Title = "Green Eggs and Ham"; 

    blog.Posts.Add(new Post { Title = "I do not like them!" }); 

    context.SaveChangesAsync().Wait(); 
} 
This will generate the following output: 

SELECT TOP (1) 
    [Extent1].[Id] AS [Id], 
    [Extent1].[Title] AS [Title] 
    FROM [dbo].[Blogs] AS [Extent1] 
    WHERE (N'One Unicorn' = [Extent1].[Title]) AND ([Extent1].[Title] IS NOT NULL) 
-- Executing at 10/8/2013 10:55:41 AM -07:00 
-- Completed in 4 ms with result: SqlDataReader 

SELECT 
    [Extent1].[Id] AS [Id], 
    [Extent1].[Title] AS [Title], 
    [Extent1].[BlogId] AS [BlogId] 
    FROM [dbo].[Posts] AS [Extent1] 
    WHERE [Extent1].[BlogId] = @EntityKeyValue1 
-- EntityKeyValue1: '1' (Type = Int32) 
-- Executing at 10/8/2013 10:55:41 AM -07:00 
-- Completed in 2 ms with result: SqlDataReader 

UPDATE [dbo].[Posts] 
SET [Title] = @0 
WHERE ([Id] = @1) 
-- @0: 'Green Eggs and Ham' (Type = String, Size = -1) 
-- @1: '1' (Type = Int32) 
-- Executing asynchronously at 10/8/2013 10:55:41 AM -07:00 
-- Completed in 12 ms with result: 1 

INSERT [dbo].[Posts]([Title], [BlogId]) 
VALUES (@0, @1) 
SELECT [Id] 
FROM [dbo].[Posts] 
WHERE @@ROWCOUNT > 0 AND [Id] = scope_identity() 
-- @0: 'I do not like them!' (Type = String, Size = -1) 
-- @1: '1' (Type = Int32) 
-- Executing asynchronously at 10/8/2013 10:55:41 AM -07:00 
-- Completed in 2 ms with result: SqlDataReader 

http://msdn.microsoft.com/en-US/data/dn469464

+0

감사합니다.하지만 Entity Framework 5를 사용하고 있습니다. 죄송합니다. 이를 반영하기 위해 질문을 업데이트했습니다. – philreed

관련 문제