小编J. *_*Doe的帖子

DI服务具有适当的缓存和dbContext用法

我真的想制作一个漂亮,干净和正确的代码,所以我几乎没有什么基本问题.一开始我有一个服务GetName._dbContext来自其他DI服务_cache

public Task<string> GetName(string title)
{
    var articleList = await _cache.GetOrCreate("CacheKey", entry =>
    {
        entry.SlidingExpiration = TimeSpan.FromSeconds(60 * 60);
        return _dbContext.Articles.ToListAsync;
    });

    var article = articleList.Where(c => c.Title == title).FirstOrDefault()

    if(article == null)
    {
        return "Non exist"
    }

    return article.Name();
}
Run Code Online (Sandbox Code Playgroud)
  1. 官方文档中我们可以读到EF上下文不是线程安全的,所以我应该await在返回后添加GetOrCreate
  2. 是否适合将其设置为Singleton服务并在操作和剃刀视图中使用它?
  3. 官方文档中,我们可以阅读:避免仅存在的"数据持有者"对象以允许访问 DI服务中的某些其他对象.当我看到我的服务时,我担心这条线.

c# dependency-injection entity-framework-core asp.net-core-mvc .net-core

5
推荐指数
2
解决办法
968
查看次数

ASP.Net Core过滤器带有参数和DI

有一种方法可以在ASP.NET Core中使用参数和DI进行过滤吗?

我的工作TestFilterAttributeTestFilterFilter和DI不带参数:

public class TestFilterAttribute : TypeFilterAttribute
{
    public TestFilterAttribute() : base(typeof(TestFilterFilter))
    {
    }

    private class TestFilterFilter : IActionFilter
    {
        private readonly MainDbContext _mainDbContext;

        public TestFilterFilter(MainDbContext mainDbContext)
        {
            _mainDbContext = mainDbContext;
        }

        public void OnActionExecuting(ActionExecutingContext context)
        {


        }

        public void OnActionExecuted(ActionExecutedContext context)
        {


        }
    }
}
Run Code Online (Sandbox Code Playgroud)

并希望简单地使用[TestFilter('MyFirstArgument', 'MySecondArgument')]agruments而不[TestFilter]需要参数

dependency-injection asp.net-core-mvc .net-core asp.net-core

3
推荐指数
1
解决办法
2606
查看次数