小编Ade*_*mak的帖子

Hangfire 事务流程(工作单元)

在下面的.Net Framework代码中,确保将某个Entity对象插入到数据库中,然后执行发布操作。然而,在.Net Core 中我无法做到这一点。当我尝试运行这段代码时,发生平台异常。

using (var transaction = new TransactionScope())
{
    SomeEntity someEntity = new SomeEntity();
    someEntity.Gui = Guid.NewGuid().ToString();

    _dataContext.SomeEntities.Add(someEntity);
    _dataContext.SaveChanges();

    _backgroundJobClient.Enqueue(() => PublishSomeEntityCreatedEvent(someEntity.Id)));

    transaction.Complete();
}
Run Code Online (Sandbox Code Playgroud)

对于这种情况有什么好的解决方案吗?

注意:.Net Core 2.2控制台应用程序、EntityFrameworkCore 2.1和Hangfire 1.6.21用于测试


更新:整个堆栈跟踪

Hangfire.BackgroundJobClientException: Background job creation failed. See inner exception for details. ---> System.PlatformNotSupportedException: This platform
 does not support distributed transactions.
   at System.Transactions.Distributed.DistributedTransactionManager.GetDistributedTransactionFromTransmitterPropagationToken(Byte[] propagationToken)
   at System.Transactions.TransactionInterop.GetDistributedTransactionFromTransmitterPropagationToken(Byte[] propagationToken)
   at System.Transactions.TransactionStatePSPEOperation.PSPEPromote(InternalTransaction tx)
   at System.Transactions.TransactionStateDelegatedBase.EnterState(InternalTransaction tx)
   at System.Transactions.EnlistableStates.Promote(InternalTransaction tx)
   at System.Transactions.Transaction.Promote()
   at System.Transactions.TransactionInterop.ConvertToDistributedTransaction(Transaction transaction)
   at System.Transactions.TransactionInterop.GetExportCookie(Transaction transaction, Byte[] whereabouts)
   at System.Data.SqlClient.SqlInternalConnection.GetTransactionCookie(Transaction transaction, …
Run Code Online (Sandbox Code Playgroud)

c# transactionscope entity-framework-core hangfire .net-core

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

未找到“Jenkinsfile”

我尝试使用 Jenkinsfile 来执行 build.ps1 文件。但是,当我扫描多分支管道时,我看到Does not meet criteria日志。为什么詹金斯找不到文件。我的回购网址是这样的

詹金斯版本:2.138.3

詹金斯文件是:

#!groovy

node {
  stage ('Checkout') {
    checkout scm
  }

  stage('Check Env Parameters'){
    echo "Branch Name : ${env.GIT_BRANCH}"
    echo "Octo Server Address : ${env.octoServer}"
  }

  stage('Run Cake') {
    powershell -File build.ps1 -projectName="Jenkins_PowerShell_Cake_Tutorial" -branchName=${env.GIT_BRANCH} -octoServer=${env.octoServer} -octoApiKey=${env.octoApiKey}
  }
}
Run Code Online (Sandbox Code Playgroud)

Jenkinsfile的类型不是txt

Jenkinsfile 文件类型屏幕截图

詹金日志:

詹金斯日志

詹金斯配置: 项目配置

jenkins jenkins-pipeline

2
推荐指数
1
解决办法
1万
查看次数

asp.net core 数据库集成测试

我正在尝试在 asp.netcore 项目中设置数据库的集成测试。我使用代码优先的方法来创建数据库。
对于使用 nuget 包 XUnit、FluentAssertions 和 NUnitestApadter3 的测试 iam。当我第一次运行测试时,测试通过了。

[Collection("Integration test collection")]
public class BookServiceTest : IntegrationTestBase
{
    [Fact]
    public void CanCreateUser()
    {
        using (var context = GivenBPDContext())
        {
            var Book = new BookService(context);

            Data.Database.Entities.Book book = Book.AddNewBook("test");
            context.SaveChanges();

            book.Id.Should().NotBe(0);
            book.Name.Should().Be("test");
        }
    }
}

public class IntegrationTestBase
{
    protected static BPDContext GivenBPDContext()
    {

        var context = new BPDContext(new DbContextOptionsBuilder().Options);

        return context;
    }
    // i tried dropping the database here and it do not work
}
Run Code Online (Sandbox Code Playgroud)

一个非常基本的逻辑测试

public class …
Run Code Online (Sandbox Code Playgroud)

c# database integration-testing

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

从文本文件中替换多个字符串

我需要在文本文件中替换多个字符串.这是我的代码:

List<string> list = new List<string>();
string Text = File.ReadAllText(temp);
list.Add(Text.Replace("name", name));
list.Add(Text.Replace("name2", name2));
list.Add(Text.Replace("1.0000", CR));
list.Add(Text.Replace("0.6590", CG));
list.Add(Text.Replace("0.0000", CB));
foreach (string txt in list)
{
    File.WriteAllText(path, txt);
}
Run Code Online (Sandbox Code Playgroud)

当我调试时,我可以看到一个接一个地替换字符串,但是当下一个字符串即将被替换时,最后一个字符串将返回其旧值.有没有办法在文本文件中替换多个字符串?

c#

0
推荐指数
1
解决办法
51
查看次数