首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >RavenDB OnBeforeStore不使用BulkInsert触发

RavenDB OnBeforeStore不使用BulkInsert触发
EN

Stack Overflow用户
提问于 2020-10-22 16:50:55
回答 1查看 62关注 0票数 4

我不能让OnBeforeStore使用BulkInsert触发。

在正常的商店操作过程中,它会很好地触发。

我正在尝试使用发票号码生成器来添加一个格式化的数字,我想在OnBeforeStore中这样做。

参见代码示例:

代码语言:javascript
复制
static async Task GenerateInvoiceTest()
{
    using var store = new DocumentStore
    {
        Urls = new string[] { "https://localhost:8080" },
        Database = "APC",
    };

    //this never fires using BulkInsert
    store.OnBeforeStore += (s, e) =>
    {
        if (!(e.Entity is Invoice invoice)) return;
        if (invoice.InvoiceNumber != 0) return;
        invoice.InvoiceNumber = new Random().Next(1, 1000);
    };

    store.Initialize();

    //sample invoices
    var invoices = new List<Invoice>
    {
        new Invoice { StartDate = DateTime.Now, EndDate = DateTime.Now.AddDays(3) },
        new Invoice { StartDate = DateTime.Now, EndDate = DateTime.Now.AddDays(3) },
    };

    //bulk insert test
    using var session = store.OpenAsyncSession();
    using var bulkInsert = store.BulkInsert();
    invoices.ForEach(i => bulkInsert.Store(i));            
    
    //this does NOT fire OnBeforeStore
    await session.SaveChangesAsync();
    
    foreach (var invoice in invoices)
    {
        //always prints 0
        Console.WriteLine(invoice.InvoiceNumber);
    }

    //regular test
    var otherInvoice = new Invoice { StartDate = DateTime.Now, EndDate = DateTime.Now.AddDays(3) };

    await session.StoreAsync(otherInvoice);

    //this DOES fire OnBeforeStore
    await session.SaveChangesAsync();
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-10-22 17:25:07

OnBeforeStore作为会话 SaveChanges方法的一部分被调用。

请参阅有关OnBeforeStore的文档。

http://localhost:54391/docs/article-page/5.0/Csharp/client-api/session/how-to/subscribe-to-events

该事件采用参数BeforeStoreEventArgs,该参数由会话实体的ID和实体本身组成。

您可以在'Store‘上定义,但它不适合与bulkInsert一起使用。

它用于从会话中保存数据。

BulkInsert操作于商店本身,而不是会话

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64486887

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档