Repository navigation
Expand file tree
/
Copy pathJoinSpecification.cs
More file actions
49 lines (43 loc) · 1.63 KB
/
Copy pathJoinSpecification.cs
File metadata and controls
49 lines (43 loc) · 1.63 KB
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
using System;
namespace SqlRepo.SqlServer
{
public class JoinSpecification
{
public Type LeftEntityType { get; internal set; }
public string LeftIdentifier { get; internal set; }
public string LeftTableAlias { get; internal set; }
public LogicalOperator LogicalOperator { get; internal set; }
public string Operator { get; internal set; }
public Type RightEntityType { get; internal set; }
public string RightIdentifier { get; internal set; }
public string RightTableAlias { get; internal set; }
internal string LeftSchema { get; set; }
internal string LeftTableName { get; set; }
internal string RightSchema { get; set; }
internal string RightTableName { get; set; }
public override string ToString()
{
var leftPrefix = string.IsNullOrEmpty(LeftTableAlias)
? $"[{LeftSchema}].[{LeftTableName}]"
: $"[{LeftTableAlias}]";
var rightPrefix = string.IsNullOrEmpty(RightTableAlias)
? $"[{RightSchema}].[{RightTableName}]"
: $"[{RightTableAlias}]";
var prefix = GetPrefix();
return
$"\n{prefix} {leftPrefix}.[{LeftIdentifier}] {Operator} {rightPrefix}.[{RightIdentifier}]";
}
private string GetPrefix()
{
switch (LogicalOperator)
{
case LogicalOperator.And:
return "AND";
case LogicalOperator.Or:
return "OR";
default:
return "ON";
}
}
}
}