【发布时间】:2020-06-20 20:19:49
【问题描述】:
我首先设置了 EF 代码,其中 帐户可以有许多交易。
public class Account : BaseEntity
{
public string AccountNumber { get; set; }
public string AccountTitle { get; set; }
public decimal CurrentBalance { get; set; }
public string Email { get; set; }
public string PhoneNumber { get; set; }
[JsonConverter(typeof(JsonStringEnumConverter))]
public AccountStatus AccountStatus { get; set; }
public ICollection<Transaction> Transactions { get; set; }
}
public enum AccountStatus
{
Active = 0,
InActive = 1
}
事务是这样设置的。
public class Transaction : BaseEntity
{
[JsonConverter(typeof(JsonStringEnumConverter))]
public TransactionType TransactionType { get; set; }
public DateTime TransactionDate { get; set; }
public decimal TransactionAmount { get; set; }
public Account Account { get; set; }
}
public enum TransactionType
{
Deposit = 0,
Withdraw = 1
}
Add 方法的通用 repo 实现是这样的
public TEntity Add(TEntity t)
{
t.Id = Guid.NewGuid().ToString();
DbSet.Add(t);
return t;
}
我也有一个使用工作单元实现的通用存储库。
在服务层我正在添加这样的事务
public async Task<Transaction> AddTransaction(Transaction transaction, string accountId)
{
// var account = await _unitOfWork.AccountRepository.GetAsync(accountId);
// transaction.Account = account;
var result = _unitOfWork.TransactionRepositoy.Add(transaction);
await _unitOfWork.CommitAsync();
return result;
}
CommitAsync 只是调用 _context.SaveChangesAsync();
当我添加交易时,如何判断我为哪个账户添加交易? 因为如上所述。 Account 可以有很多 Transactions (ICollection) 并且 Transaction 属于一个 Account (Navigation Property Account)。
【问题讨论】:
-
我缺少“附加”吗?如果是,那么如何实施?
标签: entity-framework asp.net-core entity-framework-core