Можно ли использовать SQLite.NET с неизменяемыми типами записей?

Название говорит об этом. (чтобы быть понятным, SQLite.NET размещен здесь)

Все примеры работают с изменяемыми типами записей, это означает, что они имеют { get; set; } в каждом определении свойства. Я хочу по возможности избавиться от изменяемых типов в моем проекте, но SQLite.NET выглядит как возможное препятствие.

Если я пытаюсь получить результат запроса с 1 столбца типа System.String, это терпит неудачу, например. Так можно ли заставить SQLite.NET использовать конструкторы вместо установщиков свойств, или я должен использовать изменяемые типы для извлечения и хранения данных в SQLite.NET?

1 ответ

Решение

Я не могу точно сказать, можете ли вы заставить SQLLite использовать конструкторы вместо свойств. Тем не менее, я очень сильно сомневаюсь в этом.

Использовать свойства намного проще, так как вы можете использовать отражение, чтобы найти соответствующий элемент, который соответствует имени столбца. Делать это с конструктором было бы крайне больно. На этом примечании почти все другие ORM работают точно так же.

Если вы действительно хотите использовать неизменяемые типы, вам нужно поместить оболочку в ORM, которая принимает заполненные объекты и возвращает другой объект, имеющий только неизменяемые свойства. Если вы действительно хотите убедиться, что никто не использует изменяемые типы, сделайте их internal и поместить их в отдельную сборку.

Конечно, это большая дополнительная работа только для неизменяемых типов, но, учитывая природу ORM, это в значительной степени ваш единственный вариант.

Другие вопросы по тегам