小编Ben*_*Ben的帖子

如何禁用或忽略 Dependabot 拉取请求?

我们希望使用 Dependabot 来了解更新的依赖项,但我们不希望 Dependabot 自行创建拉取请求,也不希望自动构建(我们使用 GitHub 进行代码,使用 Azure DevOps 进行构建)。

文档( https://docs.github.com/en/code-security/dependabot/working-with-dependabot/automating-dependabot-with-github-actions )中没有明确的提示来执行此操作。我们已经尝试排除 dependentabot 分支,但这在任何形式下都不起作用。

# Azure DevOps Excludes
pr:
  autoCancel: "true"
  branches:
    exclude:
    - dependabot/*
    - dependabot/**/*
Run Code Online (Sandbox Code Playgroud)

我们还在 Stack Overflow 上发现了将限制设置为 0 的提示,但仍然创建了 PR

version: 2
updates:
  - directory: "/"
    open-pull-requests-limit: 0
Run Code Online (Sandbox Code Playgroud)

是否有可能使用 Dependabot 作为信息源?

github azure-devops dependabot

8
推荐指数
1
解决办法
4410
查看次数

确定DNX项目的当前路径

目标

对于集成测试,我想加载自定义XML配置.此XML位于集成测试项目内的文件夹中.

对于进一步的目标,我想使用新的DNX项目.我知道他们还在预览中.

本地测试工作正常.现在的问题是,我不能使用相对路径,因为测试系统当前目录信息不是我项目的项目文件夹.与AppVeyor相同的问题.

构建代理程序在另一个文件夹中启动,因此相对路径信息错误并失败.这里不要惊讶.

我试图用这个片段来解决这个问题:

public abstract class IntegrationTestBase
{
    public static string CurrentPath()
    {
        string codeBase = typeof (IntegrationTestBase).Assembly.Location;
        UriBuilder uri = new UriBuilder( codeBase );
        string path = Uri.UnescapeDataString( uri.Path );
        return Path.GetDirectoryName( path );
    }
}
Run Code Online (Sandbox Code Playgroud)

问题

这里的问题是:由于新的DNX Runtime不返回我的项目和/或程序集的位置,它返回运行时文件夹:

C:/Users/ben/.dnx/runtimes/dnx-clr-win-x86.1.0.0-rc1-update1/bin/Microsoft.Dnx.Loader.dll
Run Code Online (Sandbox Code Playgroud)

如果我要求CodeBase或Executing/CallingAssembly,则行为相同.

使用"旧的"简单C#项目和MsTest,我得到了预期的路径.

Environment.CurrentDirectory 在AppVeyor上不起作用,因为进程未在项目文件夹中启动,然后此命令返回另一个路径(已启动项目的路径).

在这里使用相对路径的正确方法是什么?

环境

  • VS 2015 Update 1
  • DNX项目模板
  • xUnit配置
  • AppVeyor构建系统

c# asp.net xunit appveyor dnx

7
推荐指数
1
解决办法
5008
查看次数

AutoMapper ProjectTo 在使用 EFCore 的组合查询时抛出 NullReferenceException

我正在整合查询以最大限度地减少 SQL 往返次数。对于 Skip Take 的结果,AutoMapper 的 ProjectTo 方法似乎存在问题。

作品:

var totalUsers = await _dbContext.UserAccounts.CountAsync(cancellationToken);
var users = await _dbContext.UserAccounts
   .Skip(skip).Take(take)
   .ProjectTo<UserProjection>(_mapper.ConfigurationProvider)
   .ToListAsync(cancellationToken);
Run Code Online (Sandbox Code Playgroud)

抛出 NullReferenceException:

// query
var query = from _ in _dbContext.UserAccounts
    select new
    {
        TotalUserCount = _dbContext.UserAccounts.Count(),

        Users = _dbContext.UserAccounts
            .Skip(skip).Take(take)
            .ProjectTo<UserProjection>(_mapper.ConfigurationProvider)
            .ToList()
    };
var result = await query.FirstOrDefaultAsync(cancellationToken);
Run Code Online (Sandbox Code Playgroud)

堆:

NullReferenceException:未将对象引用设置为对象的实例。Microsoft.EntityFrameworkCore.Query.SqlExpressions.SelectExpression.AddCollectionProjection(ShapedQueryExpressionShapedQueryExpression, INavigation navigation, Type elementType) Microsoft.EntityFrameworkCore.Query.Internal.RelationalProjectionBindingExpressionVisitor.Visit(Expression expression) Microsoft.EntityFrameworkCore.Query.Internal.RelationalExpressionExpressionNewsExpressionVisition(New) ) System.Linq.Expressions.NewExpression.Accept(ExpressionVisitorvisitor) Microsoft.EntityFrameworkCore.Query.Internal.RelationalProjectionBindingExpressionVisitor.Visit(Expression expression) Microsoft.EntityFrameworkCore.Query.Internal.RelationalProjectionBindingExpressionVisitor.Translate(SelectExpression selectExpression,

该问题尤其在与 Skip and Take 结合使用时出现。

知道这可能是什么原因吗?或者这是 AutoMapper 的错误?

该代码示例取自具有当前 AutoMapper 版本的 ASP.NET Core …

automapper entity-framework-core

5
推荐指数
0
解决办法
646
查看次数

如何将值传递给 AutoMapper Profile 投影?

我们可以查看支持票证列表。

如果当前登录的用户已回复支持票证,我们现在需要显示附加图标。这意味着我们必须向投影添加额外的属性,我们不能只过滤当前用户的列表。

现在我们的想法是将这个附加属性与配置文件映射。但我们不知道如何将当前用户 ID 传递到配置文件。

在它可能看起来像这样

public class SupportTicketProjectionProfile : AutoMapper.Profile
{
    public SupportTicketProjectionProfile()
    {
        CreateMap<SupportTicketEntity, SupportTicketProjection>()
            .ForMember(p => p.CurrentUserHasReplied, 
               opt => opt.MapFrom(e=>e.Editors.Any(editor=> editor.Id == **passedIdValue**))
Run Code Online (Sandbox Code Playgroud)

但是如何传递userId呢?

我们发现我们可以将 Dictionary<string, object> 传递给 ProjectTo 方法。机器人我们找不到任何文档如何在 AutoMapper 配置文件中访问此字典。

感谢您的任何提示。

automapper entity-framework-core

5
推荐指数
1
解决办法
5537
查看次数

Dapper,.NET Core和Transactions失败

我们将基于Dapper的应用程序移植到.NET Core,我们的事务代码存在问题.

我们使用"动作"来执行东西

    public Action<IDbConnection> CreateAction(string statement, object values)
    {
        return (dbConnection) => dbConnection.Execute(statement, values);
    }
Run Code Online (Sandbox Code Playgroud)

我们使用方法来执行这些操作

    public void Execute(IEnumerable<Action<IDbConnection>> actions)
    {

        using (IDbConnection connection = OpenConnection())
        using (IDbTransaction transaction = connection.BeginTransaction())
        {
            try
            {
                foreach (var action in actions)
                {
                    action(transaction.Connection);
                }
                transaction.Commit();
            }
            catch
            {
                transaction.Rollback();
                throw;
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)

这适用于.NET Framework和Dapper 1.42,但在使用Dapper 1.50.2的.NET Core上失败.

System.InvalidOperationException:'ExecuteNonQuery要求命令在分配给命令的连接处于挂起的本地事务中时具有事务.该命令的Transaction属性尚未初始化.

如果我们使用它删除交易也可以.

需要改变什么来使它工作?

dapper .net-core

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