fissoft / fissoft.entityframework.fts Goto Github PK
View Code? Open in Web Editor NEWFull Text Search for Microsoft SQL Server with Entity Framework
License: MIT License
Full Text Search for Microsoft SQL Server with Entity Framework
License: MIT License
CodeFactor found multiple issues:
Fissoft.EntityFramework.Fts.Tests\Issue10Test.cs:57
Commit eb21a6e
Fissoft.EntityFramework.Fts.Tests\Issue10Test.cs:61
Commit eb21a6e
Fissoft.EntityFramework.Fts.Tests\Issue10Test.cs:11
Commit eb21a6e
Fissoft.EntityFramework.Fts.Tests\Issue10Test.cs:16
Commit 72ed9ac
Fissoft.EntityFramework.Fts.Tests\Issue10Test.cs:51
Commit 72ed9ac
Fissoft.EntityFramework.Fts.Tests\Issue10Test.cs:54
Commit 72ed9ac
Fissoft.EntityFramework.Fts.Tests\Issue10Test.cs:54
Commit 72ed9ac
FTS was not replaced on: SELECT
[GroupBy1].[A1] AS [C1]
FROM ( SELECT
COUNT(1) AS [A1]
FROM [dbo].[Task_tb] AS [Extent1]
WHERE ([Extent1].[CompanyId] = @p__linq__0) AND (0 = [Extent1].[isArchived]) AND ((([Extent1].[CompanyId] = @p__linq__1) AND (CASE WHEN ([Extent1].[Taskname] IS NULL) THEN N'' ELSE [Extent1].[Taskname] END + CASE WHEN ([Extent1].[Description] IS NULL) THEN N'' ELSE [Extent1].[Description] END LIKE @p__linq__2 ESCAPE N'~')) OR ( EXISTS (SELECT
1 AS [C1]
FROM [dbo].[Files] AS [Extent2]
WHERE ([Extent1].[TaskId] = [Extent2].[TaskId]) AND ([Extent2].[Name] LIKE @p__linq__3 ESCAPE N'~')
)) OR ( EXISTS (SELECT
1 AS [C1]
FROM [dbo].[Task_activity] AS [Extent3]
WHERE ([Extent1].[TaskId] = [Extent3].[TaskId]) AND (2 = [Extent3].[Type]) AND ([Extent3].[Text] LIKE @p__linq__4 ESCAPE N'~')
)))
) AS [GroupBy1]
Can I do a full search on multiple columns in left joins in LINQ/EF6?
I expected to be able to perform a full text search using special characters.
Here is an example unit test that fails for each of these special characters, but there could be more.
[TestMethod]
public void Contains_UsingSpecialCharacters_Succeeds()
{
foreach (string specialCharacter in new[]
{
"\"",
"'",
")",
"(",
"%"
})
{
using (var db = new MyDbContext())
{
db.Database.Log = Console.WriteLine;
var text = FullTextSearchModelUtil.Contains(specialCharacter);
var query = db.TestModel
.Where(c => c.Name.Contains(text))
.ToList();
}
}
}
Any work-arounds or recommendations?
Thank you!
Thank you for Fissoft.EntityFramework.Fts.
When I try to run the query db.Table1.Where(x => x.Field1.Contains(FullTextSearchModelUtil.FreeText(searchTerm));
I get the following exception:
Type:
System.NotSupportedException
Message:
LINQ to Entities does not recognize the method 'System.String FreeText(System.String)' method, and this method cannot be translated into a store expression.
Stack Trace:
at System.Data.Entity.Core.Objects.ELinq.ExpressionConverter.MethodCallTranslator.DefaultTranslator.Translate(ExpressionConverter parent, MethodCallExpression call) at System.Data.Entity.Core.Objects.ELinq.ExpressionConverter.MethodCallTranslator.TypedTranslate(ExpressionConverter parent, MethodCallExpression linq) at System.Data.Entity.Core.Objects.ELinq.ExpressionConverter.TypedTranslator`1.Translate(ExpressionConverter parent, Expression linq) at System.Data.Entity.Core.Objects.ELinq.ExpressionConverter.TranslateExpression(Expression linq) at System.Data.Entity.Core.Objects.ELinq.ExpressionConverter.TranslateFunctionIntoLike(MethodCallExpression call, Boolean insertPercentAtStart, Boolean insertPercentAtEnd, Func`5 defaultTranslator) at System.Data.Entity.Core.Objects.ELinq.ExpressionConverter.MethodCallTranslator.StringContainsTranslator.Translate(ExpressionConverter parent, MethodCallExpression call) at System.Data.Entity.Core.Objects.ELinq.ExpressionConverter.MethodCallTranslator.TypedTranslate(ExpressionConverter parent, MethodCallExpression linq) at System.Data.Entity.Core.Objects.ELinq.ExpressionConverter.TypedTranslator`1.Translate(ExpressionConverter parent, Expression linq) at System.Data.Entity.Core.Objects.ELinq.ExpressionConverter.TranslateExpression(Expression linq) at System.Data.Entity.Core.Objects.ELinq.ExpressionConverter.BinaryTranslator.TypedTranslate(ExpressionConverter parent, BinaryExpression linq) at System.Data.Entity.Core.Objects.ELinq.ExpressionConverter.TypedTranslator`1.Translate(ExpressionConverter parent, Expression linq) at System.Data.Entity.Core.Objects.ELinq.ExpressionConverter.TranslateExpression(Expression linq) at System.Data.Entity.Core.Objects.ELinq.ExpressionConverter.BinaryTranslator.TypedTranslate(ExpressionConverter parent, BinaryExpression linq) at System.Data.Entity.Core.Objects.ELinq.ExpressionConverter.TypedTranslator`1.Translate(ExpressionConverter parent, Expression linq) at System.Data.Entity.Core.Objects.ELinq.ExpressionConverter.TranslateExpression(Expression linq) at System.Data.Entity.Core.Objects.ELinq.ExpressionConverter.TranslateLambda(LambdaExpression lambda, DbExpression input) at System.Data.Entity.Core.Objects.ELinq.ExpressionConverter.TranslateLambda(LambdaExpression lambda, DbExpression input, DbExpressionBinding& binding) at System.Data.Entity.Core.Objects.ELinq.ExpressionConverter.MethodCallTranslator.OneLambdaTranslator.Translate(ExpressionConverter parent, MethodCallExpression call, DbExpression& source, DbExpressionBinding& sourceBinding, DbExpression& lambda) at System.Data.Entity.Core.Objects.ELinq.ExpressionConverter.MethodCallTranslator.OneLambdaTranslator.Translate(ExpressionConverter parent, MethodCallExpression call) at System.Data.Entity.Core.Objects.ELinq.ExpressionConverter.MethodCallTranslator.SequenceMethodTranslator.Translate(ExpressionConverter parent, MethodCallExpression call, SequenceMethod sequenceMethod) at System.Data.Entity.Core.Objects.ELinq.ExpressionConverter.MethodCallTranslator.TypedTranslate(ExpressionConverter parent, MethodCallExpression linq) at System.Data.Entity.Core.Objects.ELinq.ExpressionConverter.TypedTranslator`1.Translate(ExpressionConverter parent, Expression linq) at System.Data.Entity.Core.Objects.ELinq.ExpressionConverter.TranslateExpression(Expression linq) at System.Data.Entity.Core.Objects.ELinq.ExpressionConverter.TranslateSet(Expression linq) at System.Data.Entity.Core.Objects.ELinq.ExpressionConverter.MethodCallTranslator.GroupJoinTranslator.Translate(ExpressionConverter parent, MethodCallExpression call) at System.Data.Entity.Core.Objects.ELinq.ExpressionConverter.MethodCallTranslator.SequenceMethodTranslator.Translate(ExpressionConverter parent, MethodCallExpression call, SequenceMethod sequenceMethod) at System.Data.Entity.Core.Objects.ELinq.ExpressionConverter.MethodCallTranslator.TypedTranslate(ExpressionConverter parent, MethodCallExpression linq) at System.Data.Entity.Core.Objects.ELinq.ExpressionConverter.TypedTranslator`1.Translate(ExpressionConverter parent, Expression linq) at System.Data.Entity.Core.Objects.ELinq.ExpressionConverter.TranslateExpression(Expression linq) at System.Data.Entity.Core.Objects.ELinq.ExpressionConverter.MethodCallTranslator.OneLambdaTranslator.Translate(ExpressionConverter parent, MethodCallExpression call, DbExpression& source, DbExpressionBinding& sourceBinding, DbExpression& lambda) at System.Data.Entity.Core.Objects.ELinq.ExpressionConverter.MethodCallTranslator.OneLambdaTranslator.Translate(ExpressionConverter parent, MethodCallExpression call) at System.Data.Entity.Core.Objects.ELinq.ExpressionConverter.MethodCallTranslator.SelectManyTranslator.Translate(ExpressionConverter parent, MethodCallExpression call) at System.Data.Entity.Core.Objects.ELinq.ExpressionConverter.MethodCallTranslator.SequenceMethodTranslator.Translate(ExpressionConverter parent, MethodCallExpression call, SequenceMethod sequenceMethod) at System.Data.Entity.Core.Objects.ELinq.ExpressionConverter.MethodCallTranslator.TypedTranslate(ExpressionConverter parent, MethodCallExpression linq) at System.Data.Entity.Core.Objects.ELinq.ExpressionConverter.TypedTranslator`1.Translate(ExpressionConverter parent, Expression linq) at System.Data.Entity.Core.Objects.ELinq.ExpressionConverter.TranslateExpression(Expression linq) at System.Data.Entity.Core.Objects.ELinq.ExpressionConverter.TranslateSet(Expression linq) at System.Data.Entity.Core.Objects.ELinq.ExpressionConverter.MethodCallTranslator.BinarySequenceMethodTranslator.TranslateLeft(ExpressionConverter parent, Expression expr) at System.Data.Entity.Core.Objects.ELinq.ExpressionConverter.MethodCallTranslator.BinarySequenceMethodTranslator.Translate(ExpressionConverter parent, MethodCallExpression call) at System.Data.Entity.Core.Objects.ELinq.ExpressionConverter.MethodCallTranslator.SequenceMethodTranslator.Translate(ExpressionConverter parent, MethodCallExpression call, SequenceMethod sequenceMethod) at System.Data.Entity.Core.Objects.ELinq.ExpressionConverter.MethodCallTranslator.TypedTranslate(ExpressionConverter parent, MethodCallExpression linq) at System.Data.Entity.Core.Objects.ELinq.ExpressionConverter.TypedTranslator`1.Translate(ExpressionConverter parent, Expression linq) at System.Data.Entity.Core.Objects.ELinq.ExpressionConverter.TranslateExpression(Expression linq) at System.Data.Entity.Core.Objects.ELinq.ExpressionConverter.TranslateSet(Expression linq) at System.Data.Entity.Core.Objects.ELinq.ExpressionConverter.MethodCallTranslator.AggregateTranslator.Translate(ExpressionConverter parent, MethodCallExpression call) at System.Data.Entity.Core.Objects.ELinq.ExpressionConverter.MethodCallTranslator.SequenceMethodTranslator.Translate(ExpressionConverter parent, MethodCallExpression call, SequenceMethod sequenceMethod) at System.Data.Entity.Core.Objects.ELinq.ExpressionConverter.MethodCallTranslator.TypedTranslate(ExpressionConverter parent, MethodCallExpression linq) at System.Data.Entity.Core.Objects.ELinq.ExpressionConverter.TypedTranslator`1.Translate(ExpressionConverter parent, Expression linq) at System.Data.Entity.Core.Objects.ELinq.ExpressionConverter.TranslateExpression(Expression linq) at System.Data.Entity.Core.Objects.ELinq.ExpressionConverter.Convert() at System.Data.Entity.Core.Objects.ELinq.ELinqQueryState.GetExecutionPlan(Nullable`1 forMergeOption) at System.Data.Entity.Core.Objects.ObjectQuery`1.<>c__DisplayClass7.<GetResults>b__6() at System.Data.Entity.Core.Objects.ObjectContext.ExecuteInTransaction[T](Func`1 func, IDbExecutionStrategy executionStrategy, Boolean startLocalTransaction, Boolean releaseConnectionOnSuccess) at System.Data.Entity.Core.Objects.ObjectQuery`1.<>c__DisplayClass7.<GetResults>b__5() at System.Data.Entity.SqlServer.DefaultSqlExecutionStrategy.Execute[TResult](Func`1 operation) at System.Data.Entity.Core.Objects.ObjectQuery`1.GetResults(Nullable`1 forMergeOption) at System.Data.Entity.Core.Objects.ObjectQuery`1.<System.Collections.Generic.IEnumerable<T>.GetEnumerator>b__0() at System.Data.Entity.Internal.LazyEnumerator`1.MoveNext() at System.Linq.Enumerable.Single[TSource](IEnumerable`1 source) at System.Data.Entity.Core.Objects.ELinq.ObjectQueryProvider.<GetElementFunction>b__3[TResult](IEnumerable`1 sequence) at System.Data.Entity.Core.Objects.ELinq.ObjectQueryProvider.ExecuteSingle[TResult](IEnumerable`1 query, Expression queryRoot) at System.Data.Entity.Core.Objects.ELinq.ObjectQueryProvider.System.Linq.IQueryProvider.Execute[TResult](Expression expression) at System.Data.Entity.Internal.Linq.DbQueryProvider.Execute[TResult](Expression expression) at System.Linq.Queryable.LongCount[TSource](IQueryable`1 source)
I'm using EntityFramework.6.1.2 and Code First.
Any ideas?
Thank you.
Hi, Do you have any plans to extend functionality to incorporate wildcards in strings. Currently i'm using the library but injecting " + string + "* however I thought it could be useful functionality to have an optional boolean switch to "use wildcard matching" and facilitate as part of the word breaker.
System.Data.Entity.Core.EntityCommandExecutionException: An error occurred while executing the command definition. See the inner exception for details. ---> System.Exception: FTS was not replaced on: SELECT
[Project10].[TotalLikes] AS [TotalLikes],
[Project10].[Id] AS [Id],
[Project10].[Title] AS [Title],
[Project10].[Text] AS [Text],
[Project10].[AttachedText] AS [AttachedText],
[Project10].[Url] AS [Url],
[Project10].[PrivacyScope] AS [PrivacyScope],
[Project10].[CreatedOn] AS [CreatedOn],
[Project10].[InsertedOn] AS [InsertedOn],
[Project10].[AttachedUrl] AS [AttachedUrl],
[Project10].[PassId] AS [PassId],
[Project10].[PassedOn] AS [PassedOn],
[Project10].[AvgLikesPerDay] AS [AvgLikesPerDay],
[Project10].[MinAge] AS [MinAge],
[Project10].[MaxAge] AS [MaxAge],
[Project10].[Gender] AS [Gender],
[Project10].[Urls] AS [Urls],
[Project10].[ActorsNames] AS [ActorsNames],
[Project10].[MediaTexts] AS [MediaTexts],
[Project10].[Label_Id] AS [Label_Id]
FROM ( SELECT
[Extent1].[Id] AS [Id],
[Extent1].[Title] AS [Title],
[Extent1].[Text] AS [Text],
[Extent1].[AttachedText] AS [AttachedText],
[Extent1].[Url] AS [Url],
[Extent1].[PrivacyScope] AS [PrivacyScope],
[Extent1].[CreatedOn] AS [CreatedOn],
[Extent1].[InsertedOn] AS [InsertedOn],
[Extent1].[AttachedUrl] AS [AttachedUrl],
[Extent1].[PassId] AS [PassId],
[Extent1].[PassedOn] AS [PassedOn],
[Extent1].[TotalLikes] AS [TotalLikes],
[Extent1].[AvgLikesPerDay] AS [AvgLikesPerDay],
[Extent1].[MinAge] AS [MinAge],
[Extent1].[MaxAge] AS [MaxAge],
[Extent1].[Gender] AS [Gender],
[Extent1].[Urls] AS [Urls],
[Extent1].[ActorsNames] AS [ActorsNames],
[Extent1].[MediaTexts] AS [MediaTexts],
[Extent1].[Label_Id] AS [Label_Id]
FROM [dbo].[Ads] AS [Extent1]
LEFT OUTER JOIN [dbo].[Labels] AS [Extent2] ON [Extent1].[Label_Id] = [Extent2].[Id]
WHERE ((@p__linq__0 IS NULL) OR ( EXISTS (SELECT
1 AS [C1]
FROM [dbo].[Encounters] AS [Extent3]
INNER JOIN [dbo].[MyAppUsers] AS [Extent4] ON [Extent3].[MyAppUser_Id] = [Extent4].[Id]
WHERE ([Extent3].[Ad_Id] = [Extent1].[Id]) AND ([Extent4].[Birthday] IS NOT NULL) AND ((DATEPART (year, [Extent4].[Birthday])) <= ((DATEPART (year, SysUtcDateTime())) - @p__linq__1))
))) AND ((@p__linq__2 IS NULL) OR ( EXISTS (SELECT
1 AS [C1]
FROM [dbo].[Encounters] AS [Extent5]
INNER JOIN [dbo].[MyAppUsers] AS [Extent6] ON [Extent5].[MyAppUser_Id] = [Extent6].[Id]
WHERE ([Extent5].[Ad_Id] = [Extent1].[Id]) AND ([Extent6].[Birthday] IS NOT NULL) AND ((DATEPART (year, [Extent6].[Birthday])) >= ((DATEPART (year, SysUtcDateTime())) - @p__linq__3))
))) AND ((@p__linq__4 IS NULL) OR (( CAST(LEN(@p__linq__4) AS int)) = 0) OR ( EXISTS (SELECT
1 AS [C1]
FROM [dbo].[Encounters] AS [Extent7]
LEFT OUTER JOIN [dbo].[MyAppUsers] AS [Extent8] ON [Extent7].[MyAppUser_Id] = [Extent8].[Id]
WHERE ([Extent7].[Ad_Id] = [Extent1].[Id]) AND (([Extent8].[Gender] = @p__linq__5) OR (([Extent8].[Gender] IS NULL) AND (@p__linq__5 IS NULL)))
))) AND ((@p__linq__6 IS NULL) OR ([Extent1].[AvgLikesPerDay] > @p__linq__7)) AND ((@p__linq__8 IS NULL) OR ([Extent1].[TotalLikes] > @p__linq__9)) AND ((@p__linq__10 IS NULL) OR ( EXISTS (SELECT
1 AS [C1]
FROM [dbo].[Encounters] AS [Extent9]
LEFT OUTER JOIN [dbo].[MyAppUsers] AS [Extent10] ON [Extent9].[MyAppUser_Id] = [Extent10].[Id]
WHERE ([Extent9].[Ad_Id] = [Extent1].[Id]) AND (([Extent10].[Country] = @p__linq__11) OR (([Extent10].[Country] IS NULL) AND (@p__linq__11 IS NULL)))
))) AND ((@p__linq__12 IS NULL) OR ([Extent2].[LabelName] = @p__linq__13) OR (([Extent2].[LabelName] IS NULL) AND (@p__linq__13 IS NULL))) AND ((@p__linq__14 IS NULL) OR ( EXISTS (SELECT
1 AS [C1]
FROM [dbo].[AdActors] AS [Extent11]
WHERE ([Extent1].[Id] = [Extent11].[Ad_Id]) AND ([Extent11].[Actor_Id] = @p__linq__15)
))) AND ((@p__linq__16 IS NULL) OR ((N'video' = @p__linq__17) AND ( EXISTS (SELECT
1 AS [C1]
FROM [dbo].[Media] AS [Extent12]
WHERE ([Extent1].[Id] = [Extent12].[Ad_Id]) AND (([Extent12].[Type] = @p__linq__18) OR (([Extent12].[Type] IS NULL) AND (@p__linq__18 IS NULL)))
))) OR (( NOT ((N'video' = @p__linq__19) AND (@p__linq__19 IS NOT NULL))) AND ( NOT EXISTS (SELECT
1 AS [C1]
FROM [dbo].[Media] AS [Extent13]
WHERE ([Extent1].[Id] = [Extent13].[Ad_Id]) AND ((N'video' = [Extent13].[Type]) OR (CASE WHEN ( NOT ((N'video' = [Extent13].[Type]) AND ([Extent13].[Type] IS NOT NULL))) THEN cast(1 as bit) WHEN (N'video' = [Extent13].[Type]) THEN cast(0 as bit) END IS NULL))
)))) AND ((@p__linq__20 IS NULL) OR ((@p__linq__21 IS NULL) AND (([Extent1].[Text] LIKE @p__linq__22 ESCAPE N'~') OR ([Extent1].[AttachedText] LIKE @p__linq__23 ESCAPE N'~') OR ([Extent1].[MediaTexts] LIKE @p__linq__24 ESCAPE N'~') OR ([Extent1].[Urls] LIKE @p__linq__25 ESCAPE N'~') OR ([Extent1].[ActorsNames] LIKE @p__linq__26 ESCAPE N'~'))) OR ((N'url' = @p__linq__27) AND ([Extent1].[Urls] LIKE @p__linq__28 ESCAPE N'~')) OR ((N'advertiser' = @p__linq__29) AND ([Extent1].[ActorsNames] LIKE @p__linq__30 ESCAPE N'~')) OR ((N'text' = @p__linq__31) AND (([Extent1].[Text] LIKE @p__linq__32 ESCAPE N'~') OR ([Extent1].[AttachedText] LIKE @p__linq__33 ESCAPE N'~') OR ([Extent1].[MediaTexts] LIKE @p__linq__34 ESCAPE N'~'))) OR ((N'comments' = @p__linq__35) AND ( EXISTS (SELECT
1 AS [C1]
FROM [dbo].[Comments] AS [Extent14]
WHERE ([Extent1].[Id] = [Extent14].[Ad_Id]) AND (([Extent14].[Text] LIKE @p__linq__36 ESCAPE N'~') OR ([Extent14].[MyAppUserName] LIKE @p__linq__37 ESCAPE N'~'))
)))) AND ((@p__linq__38 IS NULL) OR ( EXISTS (SELECT
1 AS [C1]
FROM [dbo].[Snapshots] AS [Extent15]
WHERE ([Extent1].[Id] = [Extent15].[Ad_Id]) AND ([Extent15].[TakenOn] >= @p__linq__39)
)))
) AS [Project10]
ORDER BY [Project10].[CreatedOn] DESC
OFFSET 0 ROWS FETCH NEXT 10 ROWS ONLY
FtsInterceptor.cs
第90行
var value = (string) parameter.Value;
if (value.IndexOf(flag) >= 0)
当Value为空时会抛出异常
Hi
when I do single column search it works fine, but when I do multiple search search coding like:
using (var container = new ProductSystemContainer(1)) { var text = FullTextSearchModelUtil.Contains("三星 iphone5",true); var q = container.Sku.Where(c => (c.Title+c.Keywords).Contains(text)); container.Database.Log = Console.WriteLine; var a = q.ToList(); Assert.IsTrue(a.Count>1); }
it shows error
测试方法 ProductTest.SqlServerFullTextTest.FullTextTest 引发了异常:
System.Data.Entity.Core.EntityCommandExecutionException: 执行命令定义时出错。有关详细信息,请参阅内部异常。 ---> System.Exception: FTS was not replaced on: SELECT
[Extent1].[Id] AS [Id],
[Extent1].[Title] AS [Title],
[Extent1].[Keywords] AS [Keywords],
[Extent1].[Description] AS [Description],
[Extent1].[Created] AS [Created],
[Extent1].[LastModified] AS [LastModified]
FROM [dbo].[Sku] AS [Extent1]
WHERE [Extent1].[Title] + CASE WHEN ([Extent1].[Keywords] IS NULL) THEN N'' ELSE [Extent1].[Keywords] END LIKE @p__linq__0 ESCAPE N'~'
在 Fissoft.EntityFramework.Fts.FtsInterceptor.ReplacePropertyWithParameterKeyword(FtsSetting setting, String flag, String text, DbCommand cmd)
在 Fissoft.EntityFramework.Fts.FtsInterceptor.ReplaceProperty(DbCommand cmd, String flag)
在 Fissoft.EntityFramework.Fts.FtsInterceptor.RewriteFullTextQuery(DbCommand cmd)
在 Fissoft.EntityFramework.Fts.FtsInterceptor.ReaderExecuting(DbCommand command, DbCommandInterceptionContext1 interceptionContext) 在 System.Data.Entity.Infrastructure.Interception.DbCommandDispatcher.<Reader>b__d(IDbCommandInterceptor i, DbCommand t, DbCommandInterceptionContext
1 c)
在 System.Data.Entity.Infrastructure.Interception.InternalDispatcher1.Dispatch(TTarget target, Func
3 operation, TInterceptionContext interceptionContext, Action3 executing, Action
3 executed)
在 System.Data.Entity.Infrastructure.Interception.DbCommandDispatcher.Reader(DbCommand command, DbCommandInterceptionContext interceptionContext)
在 System.Data.Entity.Internal.InterceptableDbCommand.ExecuteDbDataReader(CommandBehavior behavior)
在 System.Data.Common.DbCommand.ExecuteReader(CommandBehavior behavior)
在 System.Data.Entity.Core.EntityClient.Internal.EntityCommandDefinition.ExecuteStoreCommands(EntityCommand entityCommand, CommandBehavior behavior)
--- 内部异常堆栈跟踪的末尾 ---
在 System.Data.Entity.Core.EntityClient.Internal.EntityCommandDefinition.ExecuteStoreCommands(EntityCommand entityCommand, CommandBehavior behavior)
在 System.Data.Entity.Core.Objects.Internal.ObjectQueryExecutionPlan.Execute(ObjectContext context, ObjectParameterCollection parameterValues)
在 System.Data.Entity.Core.Objects.ObjectQuery1.<>c__DisplayClass7.<GetResults>b__6() 在 System.Data.Entity.Core.Objects.ObjectContext.ExecuteInTransaction(Func
1 func, IDbExecutionStrategy executionStrategy, Boolean startLocalTransaction, Boolean releaseConnectionOnSuccess)
在 System.Data.Entity.Core.Objects.ObjectQuery1.<>c__DisplayClass7.<GetResults>b__5() 在 System.Data.Entity.SqlServer.DefaultSqlExecutionStrategy.Execute(Func
1 operation)
在 System.Data.Entity.Core.Objects.ObjectQuery1.GetResults(Nullable
1 forMergeOption)
在 System.Data.Entity.Core.Objects.ObjectQuery1.<System.Collections.Generic.IEnumerable<T>.GetEnumerator>b__0() 在 System.Data.Entity.Internal.LazyEnumerator
1.MoveNext()
在 System.Collections.Generic.List1..ctor(IEnumerable
1 collection)
在 System.Linq.Enumerable.ToList(IEnumerable`1 source)
在 ProductTest.SqlServerFullTextTest.FullTextTest() 位置 SqlServerFullTextTest.cs: line 28
return null on use code :
var text = FullTextSearchModelUtil.Contains("web", true); var query = db.Mainindustapp.Where(c => c.UnitName.Contains(text)).ToList(); return query.ToList();
return data on use code :
Mainindustapp = db.database.SqlQuery ("SELECT * FROM[DB_table].[dbo].[Mainindustapps] WHERE FREETEXT(([UnitName], [Product]), @p0)", SearchString);
Thank you for Fissoft.EntityFramework.Fts 1.0.0.8.
When I try to reference Fissoft.EntityFramework.Fts.dll in a strong named assembly, I get the following error:
Referenced assembly 'Fissoft.EntityFramework.Fts, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' does not have a strong name.
I expected the assembly to be signed by a strong name so that it can be used by other strong-named assemblies.
Thank you!
When running tests using the Effort library to mock the EF context and DB, the CommandText property is null at the ReplaceProperty method, causing all tests to fail.
Hi.
The link http://www.entityframework.info/Home/FullTextSearch in the Reference section in README.md returns a "404 Web Site not found" error.
CodeFactor found multiple issues:
Fissoft.EntityFramework.Fts.Tests\FreeTextTest.cs:25
Commit ebf464c
Fissoft.EntityFramework.Fts.Tests\FreeTextTest.cs:48
Commit ebf464c
Fissoft.EntityFramework.Fts.Tests\FreeTextTest.cs:10
Commit 72ed9ac
Fissoft.EntityFramework.Fts.Tests\FreeTextTest.cs:9
Commit 72ed9ac
Fissoft.EntityFramework.Fts.Tests\FreeTextTest.cs:9
Commit 72ed9ac
Fissoft.EntityFramework.Fts.Tests\FreeTextTest.cs:32
Commit ebf464c
Fissoft.EntityFramework.Fts.Tests\FreeTextTest.cs:55
Commit ebf464c
原生的Contains,是这样的,N'中文'
使用FullTextSearchModelUtil.Contains之后,@p__linq__0='(??) ,是没有加上N;
我看 FullTextSearchModelUtil.Contains("内衣") 返回的是(-FTSFULLTEXTCONTAINS-内衣),这个有办法处理吗?
CodeFactor found multiple issues:
Fissoft.EntityFramework.Fts\FtsInterceptor.cs:124
Commit bc4bc31
Fissoft.EntityFramework.Fts\FtsInterceptor.cs:62-122
Commit 72ed9ac
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.