Bulk Insert: How to Add Attachments
-
store.BulkInsert
is RavenDB's high-performance data insertion operation.
Use itsAttachmentsFor
interface'sStore
method to add attachments with great speed. -
In this page:
Syntax
AttachmentsFor
public AttachmentsBulkInsert AttachmentsFor(string id)
Parameters | Type | Description |
---|---|---|
id | string | Document ID |
AttachmentsFor.Store
public void Store(string name, Stream stream, string contentType = null)
Parameters | Type | Description |
---|---|---|
name | string | Attachment Name |
stream | Stream | Attachment Stream |
contentType | string | Attachment Type (default: null) |
Usage Flow
- Create a
store.BulkInsert
instance. - Pass the instance's
AttachmentsFor
interface -- Document ID
- Call
Store
as many times as you like. Pass it -- The attachment Name, Stream, and Type
Usage Sample
- In this sample, we attach a file to all User documents.
List<User> result;
// Choose user profiles to attach files to
using (var session = store.OpenSession())
{
IRavenQueryable<User> query = session.Query<User>()
.Where(u => u.Age < 30);
result = query.ToList();
}
// Bulk-insert an attachment to the chosen users
using (var bulkInsert = store.BulkInsert())
{
for (var user = 0; user < result.Count; user++)
{
byte[] byteArray = Encoding.UTF8.GetBytes("some contents here");
var stream = new MemoryStream(byteArray);
string userId = result[user].Id;
// Choose the document to attach to
var attachmentsFor = bulkInsert.AttachmentsFor(userId);
// Attach the stream
await attachmentsFor.StoreAsync("attName", stream);
}
}