Marten不存储实体

时间:2018-02-28 06:07:08

标签: c# marten

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

1 个答案:

答案 0 :(得分:1)

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

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