Нельзя использовать типизированные запросы к столбцам больших двоичных объектов, таким как коллекция Roles
, которые создаются в таблице с BLOB-объектами, используя настроенный сериализатор комплексного типа 1003 *, который по умолчанию равен формат JSV для всехСУБД, за исключением PostgreSQL, который использует JSON.
Если вы хотите выполнять серверные запросы к коллекции ролей, я бы порекомендовал сохранить их в отдельных таблицах :
container.Register<IAuthRepository>(c =>
new OrmLiteAuthRepository<UserAuthCustom, UserAuthDetails>(c.Resolve<IDbConnectionFactory>()) {
UseDistinctRoleTables = true
});
Таким образом, вы можете использовать стандартный запрос объединения, чтобы выбрать всех пользователей с определенной ролью:
var q = db.From<UserAuthCustom>()
.Join<UserAuthRole>((u,r) => r.UserAuthId = u.Id)
.Where<UserAuthRole>(x => x.Role == "Bloggers");
В качестве альтернативы вам может потребоваться создать пользовательский запрос SQL для запроса столбца ролей с пометкой в виде строки,Например:
q.Where("Roles LIKE @role", new { role = "%Blogger%" });
Или используя напечатанные имена столбцов в пользовательских выражениях SQL:
q.Where(q.Column<UserAuthCustom>(x => x.Roles) + " LIKE @role,
new { role = "%Blogger%" });