Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/270.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 貂皮不储存实体_C#_Marten - Fatal编程技术网

C# 貂皮不储存实体

C# 貂皮不储存实体,c#,marten,C#,Marten,我正在使用Marten作为我的数据层,到目前为止效果很好,但我遇到了一个毫无意义的问题。我有一个简单的方法,保存交易(购买),然后更新列表,将交易ID添加到集合中。我的问题是,Marten似乎没有存储我的更新列表,尽管它存储的是事务 当我查看数据库时,TransactionIds属性为null,但是如果我逐步查看代码,所有内容似乎都正确执行。我做错什么了吗 public async Task CreateListingTransactionAsync(ListingTransaction tra

我正在使用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();
        }
    }
公共异步任务CreateListingTransactionAsync(ListingTransaction事务)
{
if(事务==null)
抛出新的ValidationException(“创建事务需要事务”);
bool isNew=transaction.Id==Guid.Empty;
wait _listingTransactionValidator.ValidateAndThrowAsync(事务);
使用(var会话=_store.LightweightSession())
{
会话存储(事务);
如果(是新的)
{
var listing=await session.LoadAsync(transaction.ListingId);
if(清单==null)
抛出新EntityNotFoundException($“未找到Id为{transaction.ListingId}的列表”);
if(listing.TransactionIds==null)
listing.TransactionId=新列表();
listing.transactionId.Add(transaction.Id);
session.Store(列表);
}
wait session.saveChangesSync();
}
}

收集的
事务ID的序列化可能有问题

如果不是这样的话,那么这里有一些随机的东西可以尝试(并尝试理解它为什么在以后工作):

  • 尝试
    session.Update(列表)
    而不是
    session.Store(列表)
  • 尝试不同类型的文档会话