System.Core error: "Code supposed to be unreachable" using C# Entity Framework and Linq with Expression

c# entity-framework entity-framework-6 linq-expressions linq-to-entities

Question

I'm getting a "Code supposed to be unreachable" error when executing the following Linq to Sql statement. I'm using EF 6.1.3. I think this is a known bug related to filtering a navigation property. It seems like it might be fixed in EF7 but I don't see anything related to this in the EF 6.2 release notes nor the EF6 open items on GitHub so I guess I'm looking for a work around, maybe a different way of writing my Linq statement.

Ultimately, I am applying the same where clause (AccountSecurity) in multiple places (also based on passing a user key parameter) so I thought I'd be able to turn it into a function that generates the Expression to use in the where clause in my Linq to Sql statement.

    public List<Company> GetCompanyList(int p_UserKey, MemberType p_MemberType)
    {
        var qry = from cs in this.DbContext.CompanySet
                  .Where(c => c.Accounts.AsQueryable().Any(this.AccountSecurity(p_UserKey)))
                  select cs;
        return qry.ToList();
    }

    private Expression<Func<Account, bool>> AccountSecurity(int p_UserKey)
    {
        return (ac => ac.UserAccounts.Any(ua => ua.UserKey == p_UserKey));
    }
1
6
11/16/2017 2:26:45 PM

Popular Answer

As a workaround, you can capture the method call into variable outside the query expression tree and use that variable inside:

var accountFilter = this.AccountSecurity(p_UserKey);
var qry = from cs in this.DbContext.CompanySet
          .Where(c => c.Accounts.AsQueryable().Any(accountFilter))
          select cs;
return qry.ToList();
6
11/1/2017 9:39:36 PM


Related Questions





Related

Licensed under: CC-BY-SA with attribution
Not affiliated with Stack Overflow
Licensed under: CC-BY-SA with attribution
Not affiliated with Stack Overflow