forked from nhibernate/nhibernate-core
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathSingleTableSubclass.cs
43 lines (39 loc) · 1.03 KB
/
SingleTableSubclass.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
using System;
using System.Collections.Generic;
using System.Linq;
using NHibernate.Util;
namespace NHibernate.Mapping
{
[Serializable]
public class SingleTableSubclass : Subclass
{
public SingleTableSubclass(PersistentClass superclass)
: base(superclass) { }
protected internal override IEnumerable<Property> NonDuplicatedPropertyIterator
{
get { return Superclass.UnjoinedPropertyIterator.Concat(UnjoinedPropertyIterator); }
}
protected internal override IEnumerable<ISelectable> DiscriminatorColumnIterator
{
get
{
if (IsDiscriminatorInsertable && !Discriminator.HasFormula)
{
return Discriminator.ColumnIterator;
}
else
{
return base.DiscriminatorColumnIterator;
}
}
}
public override void Validate(Engine.IMapping mapping)
{
if (Discriminator == null)
{
throw new MappingException("No discriminator found for " + EntityName + ". Discriminator is needed when 'single-table-per-hierarchy' is used and a class has subclasses");
}
base.Validate(mapping);
}
}
}