forked from ravendb/ravendb
-
Notifications
You must be signed in to change notification settings - Fork 2
/
IDocumentSession.cs
148 lines (129 loc) · 4.74 KB
/
IDocumentSession.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
//-----------------------------------------------------------------------
// <copyright file="IDocumentSession.cs" company="Hibernating Rhinos LTD">
// Copyright (c) Hibernating Rhinos LTD. All rights reserved.
// </copyright>
//-----------------------------------------------------------------------
using System;
using System.Collections.Generic;
using System.Linq.Expressions;
using Raven.Client.Document;
using Raven.Client.Indexes;
using Raven.Client.Linq;
namespace Raven.Client
{
#if !SILVERLIGHT
/// <summary>
/// Interface for document session
/// </summary>
public interface IDocumentSession : IDisposable
{
/// <summary>
/// Get the accessor for advanced operations
/// </summary>
/// <remarks>
/// Those operations are rarely needed, and have been moved to a separate
/// property to avoid cluttering the API
/// </remarks>
ISyncAdvancedSessionOperation Advanced { get; }
/// <summary>
/// Marks the specified entity for deletion. The entity will be deleted when <see cref="IDocumentSession.SaveChanges"/> is called.
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="entity">The entity.</param>
void Delete<T>(T entity);
/// <summary>
/// Loads the specified entity with the specified id.
/// </summary>
/// <param name="id">The id.</param>
T Load<T>(string id);
/// <summary>
/// Loads the specified entities with the specified ids.
/// </summary>
/// <param name="ids">The ids.</param>
T[] Load<T>(params string[] ids);
/// <summary>
/// Loads the specified entities with the specified ids.
/// </summary>
/// <param name="ids">The ids.</param>
T[] Load<T>(IEnumerable<string> ids);
/// <summary>
/// Loads the specified entities with the specified id after applying
/// conventions on the provided id to get the real document id.
/// </summary>
/// <remarks>
/// This method allows you to call:
/// Load{Post}(1)
/// And that call will internally be translated to
/// Load{Post}("posts/1");
///
/// Or whatever your conventions specify.
/// </remarks>
T Load<T>(ValueType id);
/// <summary>
/// Queries the specified index using Linq.
/// </summary>
/// <typeparam name="T">The result of the query</typeparam>
/// <param name="indexName">Name of the index.</param>
IRavenQueryable<T> Query<T>(string indexName);
/// <summary>
/// Dynamically queries RavenDB using LINQ
/// </summary>
/// <typeparam name="T">The result of the query</typeparam>
IRavenQueryable<T> Query<T>();
/// <summary>
/// Queries the index specified by <typeparamref name="TIndexCreator"/> using Linq.
/// </summary>
/// <typeparam name="T">The result of the query</typeparam>
/// <typeparam name="TIndexCreator">The type of the index creator.</typeparam>
/// <returns></returns>
IRavenQueryable<T> Query<T, TIndexCreator>() where TIndexCreator : AbstractIndexCreationTask, new();
/// <summary>
/// Begin a load while including the specified path
/// </summary>
/// <param name="path">The path.</param>
ILoaderWithInclude<object> Include(string path);
/// <summary>
/// Begin a load while including the specified path
/// </summary>
/// <param name="path">The path.</param>
ILoaderWithInclude<T> Include<T>(Expression<Func<T,object>> path);
/// <summary>
/// Saves all the changes to the Raven server.
/// </summary>
void SaveChanges();
/// <summary>
/// Stores the specified entity with the specified etag
/// </summary>
void Store(object entity, Guid etag);
/// <summary>
/// Stores the specified entity with the specified etag, under the specified id
/// </summary>
void Store(object entity, Guid etag, string id);
#if !NET_3_5
/// <summary>
/// Stores the specified dynamic entity.
/// </summary>
/// <param name="entity">The entity.</param>
void Store(dynamic entity);
/// <summary>
/// Stores the specified dynamic entity, under the specified id
/// </summary>
/// <param name="entity">The entity.</param>
/// <param name="id">The id to store this entity under. If other entity exists with the same id it will be overridden.</param>
void Store(dynamic entity, string id);
#else
/// <summary>
/// Stores the specified dynamic entity.
/// </summary>
/// <param name="entity">The entity.</param>
void Store(object entity);
/// <summary>
/// Stores the specified dynamic entity, under the specified id
/// </summary>
/// <param name="entity">The entity.</param>
/// <param name="id">The id to store this entity under. If other entity exists with the same id it will be overridden.</param>
void Store(object entity, string id);
#endif
}
#endif
}