深入研究Kephas框架,我注意到 Kephas.Data 提供的功能类似于经典ORM。但是,我找不到任何有关如何连接数据库的文件,或者至少没有阐明我的假设是否正确。
答案 0 :(得分:1)
不, Kephas.Data 是对数据持久性的抽象。可以将其映射到典型的ORM上,也可以将其直接绑定到持久性存储(如MongoDB)。这里是一些起点:
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 可以容纳多个 DataContext ,每个 DataContext 负责一个专用的数据存储。区分是根据实体类型进行的。
每个 DataContext 实现均绑定到特定存储。默认情况下,Kephas提供MongoDB适配器,也正在计划使用Entity Framework适配器。
一个特殊功能是 DataBehaviors 的集成,该集成在数据或查询操作时调用。
有关更多信息,请查阅https://github.com/kephas-software/kephas/wiki/Architecture-of-data-access和类似的Wiki页面。