#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. Пакет модели .