Можно ли использовать SQLite.NET с неизменяемыми типами записей?
Название говорит об этом. (чтобы быть понятным, SQLite.NET размещен здесь)
Все примеры работают с изменяемыми типами записей, это означает, что они имеют { get; set; }
в каждом определении свойства. Я хочу по возможности избавиться от изменяемых типов в моем проекте, но SQLite.NET выглядит как возможное препятствие.
Если я пытаюсь получить результат запроса с 1 столбца типа System.String
, это терпит неудачу, например. Так можно ли заставить SQLite.NET использовать конструкторы вместо установщиков свойств, или я должен использовать изменяемые типы для извлечения и хранения данных в SQLite.NET?
1 ответ
Я не могу точно сказать, можете ли вы заставить SQLLite использовать конструкторы вместо свойств. Тем не менее, я очень сильно сомневаюсь в этом.
Использовать свойства намного проще, так как вы можете использовать отражение, чтобы найти соответствующий элемент, который соответствует имени столбца. Делать это с конструктором было бы крайне больно. На этом примечании почти все другие ORM работают точно так же.
Если вы действительно хотите использовать неизменяемые типы, вам нужно поместить оболочку в ORM, которая принимает заполненные объекты и возвращает другой объект, имеющий только неизменяемые свойства. Если вы действительно хотите убедиться, что никто не использует изменяемые типы, сделайте их internal
и поместить их в отдельную сборку.
Конечно, это большая дополнительная работа только для неизменяемых типов, но, учитывая природу ORM, это в значительной степени ваш единственный вариант.