0

我正在使用 Marten 作为我的数据层,到目前为止效果很好,但我遇到了一个没有意义的问题。我有一个简单的方法可以保存交易(购买)然后更新列表,将交易的 ID 添加到集合中。我的问题是,Marten 似乎没有存储我更新的列表,尽管它正在存储交易。

当我查看数据库时,TransactionIds 属性为空,但如果我单步执行代码,一切似乎都正确执行。我在这里做错了吗?

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();
        }
    }
4

1 回答 1

1

TransactionIds集合的序列化可能存在问题。

如果不是这种情况,那么这里有一些随机的东西可以尝试(并尝试理解为什么它稍后会起作用):

于 2018-07-28T09:26:19.593 回答