Как выполнить полнотекстовый поиск в запросе Linq при использовании LLBLGen - PullRequest
0 голосов
/ 20 сентября 2011

[Использование LLBLGen Pro 3.1 с Entity Framework 4, .NET 4 и SQLServer 2005]

У меня есть запрос linq, который включает .Contain (ключевое слово);

    IEnumerable<Product> products = null;
    using (var context = new ModelDataContext())
    {
    products = (from product in context.Products where product.Title.Contains(keyword)
     select product);
    }

Я посмотрел на производительность запроса и обнаружил, что когда генерируется SQL, это на самом деле "как"% ключевое слово% ", которое генерируется, а не содержит.

После небольшого исследования я пришелв документации LLBLGen Pro, касающейся FunctionMapping:

http://www.llblgen.com/documentation/2.6/Using%20the%20generated%20code/Linq/gencode_linq_functionmappings.htm

Я создал табличную функцию в моей базе данных sql, а также классы, необходимые в моем проекте:

    public class CustomDatabaseFunctions
{

    public static bool FullTextSearch(string fieldToSearch, string toFind)
    {
        // empty body, as it's just here to make the query compile. The call is converted to a SQL function.
        return true;
    }
}

public class CustomDatabaseFunctionMappings : FunctionMappingStore 
{
    public CustomDatabaseFunctionMappings() : base()
    {
        this.Add(new FunctionMapping(typeof(CustomDatabaseFunctions),"FullTextSearch",1,"Product_FullTextSearch({0})","ProductDatabase","Resources"));
    }
}

В следующей части документации говорится, что вам нужно передать пользовательский FunctionMappingStore в LinqMetaData.В этом примере это делается следующим образом:

metaData.CustomFunctionMappings = new NorthwindFunctionMappings();
var q = from o in metaData.Order where o.CustomerId == "CHOPS"        
select new { o.OrderId, OrderTotal = NorthwindFunctions.CalculateOrderTotal(o.OrderId, true) };

Проблема, с которой я столкнулся, заключается в том, что я выполняю свой запрос linq с использованием DataContext, и я понятия не имею, откуда берется переменная metaData или как ее использовать.это!

Я буду продолжать искать, смогу ли я узнать, но любая помощь очень приветствуется!

1 Ответ

0 голосов
/ 21 сентября 2011

документация, на которую вы ссылаетесь, относится к нашей платформе, но вы говорите, что используете EFv4.Поэтому вы должны использовать функцию отображения функций EF, а не нашу собственную платформу;).То есть, если вы используете EF, но код подсказывает, что нет.Так что я очень смущен.

Также лучше публиковать вопросы о LLBLGen Pro на наших собственных форумах поддержки, поскольку мы не отслеживаем SO.

...