Inquiridor
Select no EF com IN em uma string

Pergunta
-
Boa tarde.
Em meu sistema um registro no banco quase sempre terá umc ampo CODIGO REGISTRO. E tenho na Session uma lista dos registros que o usuário tem permissão.
Por exemplo usuário Romulo é do REGISTRO 1, e na session terei Registros = "1,2,3,4". Tenho até 12 mais ou menos, mas este usuário participa dos 4 registros (empresas).
Daí tenho que em quase toda query minha por um WHERE também no campo Registro para ver se ele está nesta lista de registros. Nâo pode correr o risco de ver dados de outra empresa.
Daí tentei isso:
public IEnumerable<HistoricoIDConexao> RetornarHistoricoIDConexaoPorIDConexao(int pIDConexao) { var data = (from r in _Contexto.DbHistoricoIDConexao where (r.CodigoIDConexao == pIDConexao && r.CodigoRegistro.ToString().Contains(GestorWebUtils.Registros)) orderby r.DataHora select r).ToList(); return data; }
Tentei fazer da forma r.CodigoRegistro.Contais só que tive que fazer um ToString e o EF está enguiçando. Erro:
LINQ to Entities does not recognize the method 'System.String ToString()' method, and this method cannot be translated into a store expression.
Outra dúvida:
Após uma QUERY EF pronta, eu posso incluir mais um WHERE com estes Registros? No PHP, uzando Zend_DB, eu criei um método AdicionarWherePadraoEmpresas que daí ele fazia esse Contais em todas as querys. Eu não precisava montar manualmente sempre.
Basicamente eu monto a query e chamo um método passando a query. Exemplo:
MontarWherePadrao(data); E dentro ele tem que incluir outro where.
Todas as Respostas
-
Tenta isso:
var data = (from r in _Contexto.DbHistoricoIDConexao where (r.CodigoIDConexao == pIDConexao && GestorWebUtils.Registros.Contains(SqlFunctions.StringConvert((double)r.CodigoRegistro)) orderby r.DataHora select r).ToList(); return data;
e sim, você pode incluir mais de um Where:
var result = db.User .Where(u => u.OfficeId == 1) .Where(u => u.GroupId == 1) .ToList();
http://www.linkedin.com/pub/murilo-kunze/44/191/455
- Editado Murilo Kunze sábado, 24 de novembro de 2012 18:03
-
-
-