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