ServiceStack自动查询全局过滤器
本文关键字:全局 过滤器 查询 ServiceStack | 更新日期: 2023-09-27 17:53:07
我正在考虑使用ServiceStack的自动查询功能,我有一些基本的查询工作。然而,我想实现一个全局过滤器,因为我有一个多租户数据库,例如,
所有查询都应附加条件CustomerId = Session。CustomerId
最好的方法是什么?
你可以使用自定义AutoQuery基类来为每个查询附加自定义过滤器,例如:
public abstract class MyAutoQueryServiceBase : AutoQueryServiceBase
{
public override object Exec<From>(IQuery<From> dto)
{
var q = AutoQuery.CreateQuery(dto, Request);
var session = base.SessionAs<CustomUserSession>();
q.And("CustomerId = {0}", session.CustomerId);
return AutoQuery.Execute(dto, q);
}
public override object Exec<From, Into>(IQuery<From, Into> dto)
{
var q = AutoQuery.CreateQuery(dto, Request);
var session = base.SessionAs<CustomUserSession>();
q.And("CustomerId = {0}", session.CustomerId);
return AutoQuery.Execute(dto, q);
}
}
然后告诉AutoQuery使用你的基类,例如:
Plugins.Add(new AutoQueryFeature {
AutoQueryServiceBaseType = typeof(MyAutoQueryServiceBase)
});