我和Marten一起工作是我的数据层,到目前为止它还很棒,但是我遇到了一个没有意义的问题。我有一个简单的方法来保存交易(购买)然后更新列表,将事务的ID添加到集合。我的问题是,Marten似乎没有存储我更新的列表,尽管它存储了事务。
当我查看数据库时,TransactionIds属性为null,但如果我单步执行代码,则一切似乎都正确执行。我在这里做错了吗?
public async Task CreateListingTransactionAsync(ListingTransaction transaction)
{
if (transaction == null)
throw new ValidationException("Transaction is required to create a transaction");
bool isNew = transaction.Id == Guid.Empty;
await _listingTransactionValidator.ValidateAndThrowAsync(transaction);
using (var session = _store.LightweightSession())
{
session.Store(transaction);
if (isNew)
{
var listing = await session.LoadAsync<Listing>(transaction.ListingId);
if (listing == null)
throw new EntityNotFoundException($"Listing with Id: {transaction.ListingId} not found");
if (listing.TransactionIds == null)
listing.TransactionIds = new List<Guid>();
listing.TransactionIds.Add(transaction.Id);
session.Store(listing);
}
await session.SaveChangesAsync();
}
}
答案 0 :(得分:1)
TransactionIds
集合的序列化可能存在问题。
如果不是这种情况,那么可以尝试一些随机的事情(并尝试理解为什么以后会起作用):
session.Update(listing);
代替session.Store(listing);
。