Является ли Kephas.Данные какой-то ORM?

#orm #kephas

#orm #kephas

Вопрос:

Копаясь в фреймворке Kephas, я заметил, что Kephas.Data предоставляет функциональность, аналогичную функциональности классических ORM. Однако я не нашел никакой документации о том, как подключиться к базам данных или, по крайней мере, уточнить, верно ли мое предположение или нет.

Ответ №1:

Нет, Kephas.Данные — это абстракция, а не сохранение данных. Он может быть отображен поверх обычных ORM или может быть привязан непосредственно к хранилищу сохраняемости, например MongoDB. Вот несколько отправных точек:

  • Всякий раз, когда вам нужен доступ к данным, импортируйте службу IDataSpace через фабрику, что-то вроде кода ниже:
     public class DataConsumer
    {
        IExportFactory<IDataSpace> dataSpaceFactory;

        public DataConsumer(IExportFactory<IDataSpace> dataSpaceFactory)
        {
            this.dataSpaceFactory = dataSpaceFactory;
        }

        public async Task<> GetDocumentsCountAsync(CancellationToken token)
        {
            using (var dataSpace = dataSpaceFactory.CreateExportedValue())
            {
                var documentCount = await dataSpace.Query<Document>().CountAsync().PreserveThreadContext();
                return documentCount;
            } 
        }
    }
  
  • Используйте Query<TEntity>() метод для запроса сущностей, используя LINQ для формирования данных. Однако вы должны убедиться, что базовая инфраструктура понимает используемый вами LINQ.

  • Используйте CreateEntityAsync<TEntity>() : TEntity , DeleteEntity(entity) , FindAsync<TEntity>(id): TEntity , FindOneAsync<TEntity>(linq_expression) для создания, удаления или поиска объекта.

  • Используется PersistChangesAsync() для сохранения изменений в памяти в хранилище сохраняемости.

Пространство данных может содержать несколько DataContexts, каждый DataContext отвечает за выделенное хранилище данных. Дискриминация осуществляется по типу объекта.

Каждая реализация DataContext привязана к определенному хранилищу. По умолчанию Kephas предоставляет адаптер MongoDB, также планируется адаптер Entity Framework.

Особенностью является интеграция DataBehaviors, которые вызываются при операциях с данными или запросами.

Для получения дополнительной информации, пожалуйста, обратитесь https://github.com/kephas-software/kephas/wiki/Architecture-of-data-access и аналогичные вики-страницы.

Комментарии:

1. Мне нужно немного времени, чтобы проверить это, спасибо!

2. Однако один вопрос: интегрируется ли компонент данных каким-либо образом с моделью?

3. Да, он интегрируется, но это необязательная функция. Проверьте для этой цели Kephas.Data. Пакет модели .