diff --git a/orleans/BankAccount/AccountTransfer.Grains/AccountGrain.cs b/orleans/BankAccount/AccountTransfer.Grains/AccountGrain.cs index 97b71f422d6..02b37972902 100644 --- a/orleans/BankAccount/AccountTransfer.Grains/AccountGrain.cs +++ b/orleans/BankAccount/AccountTransfer.Grains/AccountGrain.cs @@ -1,16 +1,15 @@ using AccountTransfer.Interfaces; -using Orleans.Concurrency; using Orleans.Transactions.Abstractions; namespace AccountTransfer.Grains; -[GenerateSerializer, Immutable] -public record class Balance +[GenerateSerializer] +public class Balance { - public int Value { get; init; } = 1_000; + [Id(0)] + public int Value { get; set; } = 1_000; } -[Reentrant] public sealed class AccountGrain : Grain, IAccountGrain { private readonly ITransactionalState _balance; @@ -21,7 +20,7 @@ public AccountGrain( public Task Deposit(int amount) => _balance.PerformUpdate( - balance => balance with { Value = balance.Value + amount }); + balance => balance.Value += amount); public Task Withdraw(int amount) => _balance.PerformUpdate(balance => @@ -34,7 +33,7 @@ public Task Withdraw(int amount) => $" This account has {balance.Value} credits."); } - return balance with { Value = balance.Value + amount }; + balance.Value -= amount; }); public Task GetBalance() =>