그림 1에 표시된 것처럼 here이라는 차단 예제를 사용하여 EF 6에서 작동하지만 RewriteFullTextQuery
과 같은 문제가 발생하면 차단이 작동하는 것 같습니다. cmd.Parameters.Count
은 항상 0이므로 RewriteFullTextQuery
메서드의 for
루프에서 실제로 논리를 실행하지 않습니다. 또한 cmd.CommandText
속성은 가로 채기가 올바르게 작동하고 있다는 또 다른 증거로 받아들이는 올바른 SQL 쿼리를 표시하는 것으로 보입니다.Intercept가 Entity Framework 6에서 예상대로 작동하지 않습니다.
도 1 RewriteFullTextQuery 코드 발췌
public static void RewriteFullTextQuery(DbCommand cmd)
{
string text = cmd.CommandText;
for (int i = 0; i < cmd.Parameters.Count; i++)
{
DbParameter parameter = cmd.Parameters[i];
if (parameter.DbType.In(DbType.String, DbType.AnsiString, DbType.StringFixedLength, DbType.AnsiStringFixedLength))
{
RewriteFullTextQuery 기능은 모든 문제를 일으키는 명령 인수를 제공도 2에 도시 ReaderExecuting
함수가 호출되고있다.
그림 2 : ReaderExecuting 기능
내 코드의 예와 완전히 동일하지 않습니다 비록public void ReaderExecuting(DbCommand command, DbCommandInterceptionContext<DbDataReader> interceptionContext)
{
RewriteFullTextQuery(command);
}
, 차단은 채울 것 그것이 그것이 나에게 어떤 조건을 궁금해하고있다 그래서 작동하는 것 같군 명령을 사용하여 Parameters.Count
이 0 이상입니까?
나는 어제 대답으로 그 블로그를 발견하고 내가 찾은 바로 그 대답을 바꾼 것을 알기 바로 전에 나의 대답을 게시했습니다. 내 대답을 받아 들일 수있는 블로그의 해결책이 있었기 때문에 대답을 받아들이고 싶습니다. 그러나 도움을 주신 답을 상향 표시합니다. –