-
Notifications
You must be signed in to change notification settings - Fork 936
/
Copy pathISQLQuery.cs
116 lines (101 loc) · 3.81 KB
/
ISQLQuery.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
using System;
using System.Collections.Generic;
using NHibernate.Type;
using NHibernate.Util;
namespace NHibernate
{
// 6.0 TODO: remove after having done ISynchronizableSQLQuery todo
public static class SQLQueryExtension
{
/// <summary>
/// Adds a query space for auto-flush synchronization and second level cache invalidation.
/// </summary>
/// <param name="sqlQuery">The query.</param>
/// <param name="querySpace">The query space.</param>
/// <returns>The query.</returns>
public static ISQLQuery AddSynchronizedQuerySpace(this ISQLQuery sqlQuery, string querySpace)
{
var ssq = ReflectHelper.CastOrThrow<ISynchronizableSQLQuery>(sqlQuery, "synchronizable query");
return ssq.AddSynchronizedQuerySpace(querySpace);
}
/// <summary>
/// Adds an entity name for auto-flush synchronization and second level cache invalidation.
/// </summary>
/// <param name="sqlQuery">The query.</param>
/// <param name="entityName">The entity name.</param>
/// <returns>The query.</returns>
public static ISQLQuery AddSynchronizedEntityName(this ISQLQuery sqlQuery, string entityName)
{
var ssq = ReflectHelper.CastOrThrow<ISynchronizableSQLQuery>(sqlQuery, "synchronizable query");
return ssq.AddSynchronizedEntityName(entityName);
}
/// <summary>
/// Adds an entity type for auto-flush synchronization and second level cache invalidation.
/// </summary>
/// <param name="sqlQuery">The query.</param>
/// <param name="entityType">The entity type.</param>
/// <returns>The query.</returns>
public static ISQLQuery AddSynchronizedEntityClass(this ISQLQuery sqlQuery, System.Type entityType)
{
var ssq = ReflectHelper.CastOrThrow<ISynchronizableSQLQuery>(sqlQuery, "synchronizable query");
return ssq.AddSynchronizedEntityClass(entityType);
}
/// <summary>
/// Returns the synchronized query spaces added to the query.
/// </summary>
/// <param name="sqlQuery">The query.</param>
/// <returns>The synchronized query spaces.</returns>
public static IReadOnlyCollection<string> GetSynchronizedQuerySpaces(this ISQLQuery sqlQuery)
{
var ssq = ReflectHelper.CastOrThrow<ISynchronizableSQLQuery>(sqlQuery, "synchronizable query");
return ssq.GetSynchronizedQuerySpaces();
}
}
// 6.0 TODO: obsolete ISynchronizableSQLQuery and have ISQLQuery directly extending ISynchronizableQuery<ISQLQuery>
public interface ISynchronizableSQLQuery : ISQLQuery, ISynchronizableQuery<ISynchronizableSQLQuery>
{
}
public interface ISQLQuery : IQuery
{
/// <summary>
/// Declare a "root" entity, without specifying an alias
/// </summary>
ISQLQuery AddEntity(string entityName);
/// <summary>
/// Declare a "root" entity
/// </summary>
ISQLQuery AddEntity(string alias, string entityName);
/// <summary>
/// Declare a "root" entity, specifying a lock mode
/// </summary>
ISQLQuery AddEntity(string alias, string entityName, LockMode lockMode);
/// <summary>
/// Declare a "root" entity, without specifying an alias
/// </summary>
ISQLQuery AddEntity(System.Type entityClass);
/// <summary>
/// Declare a "root" entity
/// </summary>
ISQLQuery AddEntity(string alias, System.Type entityClass);
/// <summary>
/// Declare a "root" entity, specifying a lock mode
/// </summary>
ISQLQuery AddEntity(string alias, System.Type entityClass, LockMode lockMode);
/// <summary>
/// Declare a "joined" entity
/// </summary>
ISQLQuery AddJoin(string alias, string path);
/// <summary>
/// Declare a "joined" entity, specifying a lock mode
/// </summary>
ISQLQuery AddJoin(string alias, string path, LockMode lockMode);
/// <summary>
/// Declare a scalar query result
/// </summary>
ISQLQuery AddScalar(string columnAlias, IType type);
/// <summary>
/// Use a predefined named ResultSetMapping
/// </summary>
ISQLQuery SetResultSetMapping(string name);
}
}