在分片文档store-ravendb中更新文档

时间:2013-08-29 14:53:35

标签: ravendb sharding

这里更新ravendb分片文档存储中的文档似乎很忙,因为我使用带有id的sess.store来更新任何给定的文档,我使用存储来避免并发更新我使用以下代码来更新。 / p>

这是文档结构

public class DistributorRechargePayment:IPOCOLogInfo
            {

               [JsonIgnore]
               public Guid? Etag;
               public String Id { get; set; }
               public String ReceiptNo { get; set; }
               public TransactionTypes TransactionType { get; set; }
               public String PaymentId { get; set; }
        }

这是更新的代码

sess.Store(distbpayment, myguid1, distbpayment.Id);

在我的分片策略中,我引用了一个分片键,其中包含其他一些值,如下所示

 var shards = new Dictionary<string, IDocumentStore>
            {
                {"zero", new DocumentStore {Url = "http://localhost:8080"}},
                {"one", new DocumentStore {Url = "http://localhost:8081"}},
                {"two", new DocumentStore {Url = "http://localhost:8082"}},

            };
        shardStrategy = new ShardStrategy(shards).ShardingOn<DistributorRechargePayment>(x => x.ReceiptNo);

现在这里发生的是当我第一次存储文档时将文档移动到正确的分片,例如,如果receiptno是one-123455,则此文档将转到正确的分片。当我再次通过商店更新时,我已经将文档ID作为一个DistributorRechargePayment-1,因此id被重写为one-one-DistributorRechargePayment-1,这会引发错误。

这里我可以使用sess.saveshanges()。但为了确保乐观的并发性,我需要sess.store()。我需要一个解决方案来使用乐观并发并实现分片存储

0 个答案:

没有答案