Re: Linq to DynamoDB
От: IT Россия linq2db.com
Дата: 10.05.19 21:34
Оценка: 8 (1)
Здравствуйте, Слава, Вы писали:

С>Я хочу сделать нечто вроде linq2db для DynamoDB. Но, для этого нужно транслировать ExpressionTree в сам запрос, а проблема в том, что выражения DynamoDB поддерживают далеко не все операции linq. SQL гораздо более полный. То есть, чтобы не дать программисту написать выражение, которое не может быть скомпилировано в запрос, нужно видимо писать набор своих операций, подобных linq. Но ведь для IQueryable (потомка IEnumerable) определено множество методов linq, и соответственно, при использовании IQueryable нельзя гарантировать, что будут использованы только разрешенные в DynamoDB операции. Что же с этим делать, создавать своего потомка IEnumerable? Так тоже не пойдёт, ведь всегда можно привести гипотетический IDynamoQueryable к IEnumerable и вызвать неподдерживаемую операцию.


С>Что бы вы порекомендовали?


При использовании IQueriable нельзя гарантировать в том числе и то, что будут использованы только разрешённые в SQL операции. Таких ситуаций тоже достаточно много, но не настолько и мы просто ограничились тем, что выдаём исключение при генерации SQL.

В вашем случае можно повторить набор нужных операций из IQueryable для чего-то вроде DynamoDBQueryable, что автоматически ограничит их набор для ваших целей. Так было сделано в EF6-. Они вообще продублировали самостоятельно всё, что было в IQueriable. Это позволит использовать и ограничить в том числе и query comprehension syntax. Для него важно только совпадение названий и некоторых сигнатур методов.
Если нам не помогут, то мы тоже никого не пощадим.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.