在下面的.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
我尝试使用 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
詹金日志:
我正在尝试在 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) 我需要在文本文件中替换多个字符串.这是我的代码:
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)
当我调试时,我可以看到一个接一个地替换字符串,但是当下一个字符串即将被替换时,最后一个字符串将返回其旧值.有没有办法在文本文件中替换多个字符串?