通过 Kephas 框架深入挖掘,我注意到Kephas.Data提供了类似于经典 ORM 的功能。但是,我没有找到任何关于如何连接到数据库的文档,或者至少没有找到澄清我的假设是否正确的文档。
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>() : TEntity
,DeleteEntity(entity)
,FindAsync<TEntity>(id): TEntity
,FindOneAsync<TEntity>(linq_expression)
创建、删除或查找实体。用于
PersistChangesAsync()
将内存中的更改持久化到持久性存储。
一个DataSpace可以容纳多个DataContexts,每个DataContext负责一个专用的数据存储。区分是按实体类型进行的。
每个DataContext实现都绑定到特定的存储。默认情况下,Kephas 提供 MongoDB 适配器,实体框架适配器也在计划中。
一个特殊功能是DataBehaviors的集成,它在数据或查询操作时被调用。
有关更多信息,请参阅https://github.com/kephas-software/kephas/wiki/Architecture-of-data-access和类似的 wiki 页面。