Kephas.Data 是某种 ORM 吗?

Is Kephas.Data some kind of ORM?

通过 Kephas 框架深入挖掘,我注意到 Kephas.Data 提供了类似于经典 ORM 的功能。但是,我没有找到任何关于如何连接到数据库或至少澄清我的假设是否正确的文档。

不,Kephas.Data 是对数据持久性的抽象。它可以映射到典型的 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>() : TEntityDeleteEntity(entity)FindAsync<TEntity>(id): TEntityFindOneAsync<TEntity>(linq_expression)创建、删除或查找实体。

  • 使用PersistChangesAsync()将内存中的更改持久化到持久性存储。

一个DataSpace可以容纳多个DataContext,每个DataContext负责一个专用数据店铺。区分是按实体类型进行的。

每个 DataContext 实现都绑定到特定的存储。默认情况下,Kephas 提供 MongoDB 适配器,Entity Framework 适配器也在计划中。

一个特殊功能是 DataBehaviors 的集成,它在数据或查询操作时被调用。

有关详细信息,请参阅 https://github.com/kephas-software/kephas/wiki/Architecture-of-data-access 和类似的 wiki 页面。