我遇到了以下问题,
我有一个类'Car',其函数使用EntityFramework来访问数据库并通过几个过滤器获取所有表行。
这样的事情:
public class car
{
private const string VEHICLE_TYPE = "something_here";
[CachedAttribute(30)]
public virtual List<Vehicles> GetVehiclesFromDB()
{
return _repository.Set<Vehicles>().Where(e => e.VehicleType == VEHICLE_TYPE && e.Weight < CAR_MAX_WEIGHT);
}
}
我还在其上添加了一个属性。在这个属性中,我需要能够检索一些东西,
我需要获取班级名称(在这种情况下是汽车), 我还需要获取函数返回值的类型(在本例中为对象Vehicle) 我需要在VEHICLE_TYPE中获取值。
之后我需要能够从属性中执行该函数('GetVehiclesFromDB')
public class CachedAttribute : Attribute
{
public CachedAttribute(int seconds)
{
// todo
}
}
我从未做过那种事情,我不确定我应该采取什么方法。这是反思吗?或者它可能是完全不同的东西?
编辑:
我确实需要将它用于缓存,我想使用Redis。
答案 0 :(得分:0)
属性类不必做任何事情,它只是数据。
调用GetVehiclesFromDB
的类必须检查car
类是否具有某些属性,并使用结果更改逻辑。
要获得更多帮助,您可以在
中查看此article&#34; 除了信息之外我们还能做些什么?&#34;部分。
答案 1 :(得分:0)
错误..那不是什么属性。它们提供有关元素的信息,但它们无法与之交互。
从您声明的属性的名称,我猜你想要做的是类似的事情:
private List<Vehicles> _vehicles;
public List<Vehicles> Vehicles {
get {
if(_vehicles == null) {
_vehicles = _repository.Set<Vehicles>().Where(e => e.VehicleType == VEHICLE_TYPE && e.Weight < CAR_MAX_WEIGHT);
}
return _vehicles;
}
}
显然,我只是猜测你的意图,所以这可能不是你想要的,但希望能让你走上正轨。例如,如果要全局缓存列表,可以使用HttpContext.Current.Cache(如果您正在开发Web应用程序)来存储值。
答案 2 :(得分:0)
属性的目的是提供元数据或执行任何请求过滤,例如身份验证/授权/日志记录。
如果要缓存方法的输出,请考虑以下方式
希望这有帮助。