Bug #75137 .Net Connector 6.9.5 does not pass in variable argument for .Contains extension
Submitted: 7 Dec 2014 2:01 Modified: 8 Dec 2014 6:47
Reporter: Phil Cazella Email Updates:
Status: Duplicate Impact on me:
Category:Connector / NET Severity:S1 (Critical)
Version:6.9.5 OS:Microsoft Windows
Assigned to: CPU Architecture:Any

[7 Dec 2014 2:01] Phil Cazella

Setup info:

VS2013 / C#
MySQL database
.Net Connector 6.9.5

I'm trying to create a method that returns a collection of Account records using a partial name as the search criteria. If I hard code a string value using the IQueryable .Contains() extension method, it returns data. However, when I attempt to use a variable no data is returned.

Public class Test() {

MyEntities db = new MyEntities();

//Works....but the search criteria is hard coded.
  public IQueryable<Account> WorksButValueHardCoded() {

    return (from a in db.Accounts
           where a.accountname.Contains("Test")
           select a);

//Does not return anything
  public IQueryable<Account> DoesNotReturnAnyData() {

    //Obviously I would use a parameter, but even this test fails
    string searchText = "Test";  

    return (from a in db.Accounts
           where a.accountname.Contains(searchText)
           select a);

How to repeat:
Create a context

query that context and pass a variable to the the .Contains extension method for a VARCHAR field.

Suggested fix:
I can see in the LINQ generated SQL used the LIKE operator, but I don't understand how the variable is injected to suggest a fix.

FROM `account` AS `Extent1`
WHERE `Extent1`.`accountname` LIKE '%p__linq__0%'
[8 Dec 2014 6:47] Chiranjeevi Battula
Hello Phil Cazella,

Thank you for the bug report.
This is duplicate of Bug #74918.