Kephas.Data是某种ORM吗?

时间:2019-04-13 11:17:04

标签: orm kephas

深入研究Kephas框架,我注意到 Kephas.Data 提供的功能类似于经典ORM。但是,我找不到任何有关如何连接数据库的文件,或者至少没有阐明我的假设是否正确。

1 个答案:

答案 0 :(得分:1)

不, 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页面。