|
From: <fab...@us...> - 2011-04-10 22:50:12
|
Revision: 5662
http://nhibernate.svn.sourceforge.net/nhibernate/?rev=5662&view=rev
Author: fabiomaulo
Date: 2011-04-10 22:50:06 +0000 (Sun, 10 Apr 2011)
Log Message:
-----------
SimpleModelInspector with default pattern to discover TablePerClass entities
Modified Paths:
--------------
trunk/nhibernate/src/NHibernate/Mapping/ByCode/SimpleModelInspector.cs
trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj
Added Paths:
-----------
trunk/nhibernate/src/NHibernate.Test/MappingByCode/MixAutomapping/DefaultClassHierarchyRepresentationTests.cs
Modified: trunk/nhibernate/src/NHibernate/Mapping/ByCode/SimpleModelInspector.cs
===================================================================
--- trunk/nhibernate/src/NHibernate/Mapping/ByCode/SimpleModelInspector.cs 2011-04-10 22:20:17 UTC (rev 5661)
+++ trunk/nhibernate/src/NHibernate/Mapping/ByCode/SimpleModelInspector.cs 2011-04-10 22:50:06 UTC (rev 5662)
@@ -15,7 +15,7 @@
private Func<System.Type, bool, bool> isEntity = (t, declared) => declared;
private Func<System.Type, bool, bool> isRootEntity = (t, declared) => declared;
- private Func<System.Type, bool, bool> isTablePerClass = (t, declared) => declared;
+ private Func<System.Type, bool, bool> isTablePerClass;
private Func<SplitDefinition, bool, bool> isTablePerClassSplit = (sd, declared) => declared;
private Func<System.Type, bool, bool> isTablePerClassHierarchy = (t, declared) => declared;
private Func<System.Type, bool, bool> isTablePerConcreteClass = (t, declared) => declared;
@@ -44,6 +44,7 @@
public SimpleModelInspector()
{
isEntity = (t, declared) => declared || MatchEntity(t);
+ isTablePerClass = (t, declared) => declared || MatchTablePerClass(t);
isPersistentId = (m, declared) => declared || MatchPoIdPattern(m);
isComponent = (t, declared) => declared || MatchComponentPattern(t);
isPersistentProperty = (m, declared) => declared || MatchNoReadOnlyPropertyPattern(m);
@@ -55,6 +56,11 @@
isOneToMany = (m, declared) => declared || MatchOneToMany(m);
}
+ private bool MatchTablePerClass(System.Type type)
+ {
+ return !declaredModel.IsTablePerClassHierarchy(type) && !declaredModel.IsTablePerConcreteClass(type);
+ }
+
private bool MatchOneToMany(MemberInfo memberInfo)
{
var modelInspector = (IModelInspector) this;
Added: trunk/nhibernate/src/NHibernate.Test/MappingByCode/MixAutomapping/DefaultClassHierarchyRepresentationTests.cs
===================================================================
--- trunk/nhibernate/src/NHibernate.Test/MappingByCode/MixAutomapping/DefaultClassHierarchyRepresentationTests.cs (rev 0)
+++ trunk/nhibernate/src/NHibernate.Test/MappingByCode/MixAutomapping/DefaultClassHierarchyRepresentationTests.cs 2011-04-10 22:50:06 UTC (rev 5662)
@@ -0,0 +1,58 @@
+using NHibernate.Mapping.ByCode;
+using NUnit.Framework;
+using SharpTestsEx;
+
+namespace NHibernate.Test.MappingByCode.MixAutomapping
+{
+ public class DefaultClassHierarchyRepresentationTests
+ {
+ private class MyClass
+ {
+ public int Id { get; set; }
+ }
+
+ private class Inherited: MyClass
+ {
+ }
+
+ [Test]
+ public void WhenNotExplicitlyDeclaredThenIsTablePerClass()
+ {
+ var autoinspector = new SimpleModelInspector();
+ var mapper = new ModelMapper(autoinspector);
+ mapper.Class<MyClass>(x => { });
+ var inspector = (IModelInspector)autoinspector;
+
+ inspector.IsTablePerClass(typeof(MyClass)).Should().Be.True();
+ inspector.IsTablePerClass(typeof(Inherited)).Should().Be.True();
+ }
+
+ [Test]
+ public void WhenExplicitlyDeclaredAsSubclassThenIsNotTablePerClass()
+ {
+ var autoinspector = new SimpleModelInspector();
+ var mapper = new ModelMapper(autoinspector);
+ mapper.Class<MyClass>(x => { });
+ mapper.Subclass<Inherited>(x => { });
+
+ var inspector = (IModelInspector)autoinspector;
+
+ inspector.IsTablePerClass(typeof(MyClass)).Should().Be.False();
+ inspector.IsTablePerClass(typeof(Inherited)).Should().Be.False();
+ }
+
+ [Test]
+ public void WhenExplicitlyDeclaredAsUnionSubclassThenIsNotTablePerClass()
+ {
+ var autoinspector = new SimpleModelInspector();
+ var mapper = new ModelMapper(autoinspector);
+ mapper.Class<MyClass>(x => { });
+ mapper.UnionSubclass<Inherited>(x => { });
+
+ var inspector = (IModelInspector)autoinspector;
+
+ inspector.IsTablePerClass(typeof(MyClass)).Should().Be.False();
+ inspector.IsTablePerClass(typeof(Inherited)).Should().Be.False();
+ }
+ }
+}
\ No newline at end of file
Modified: trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj
===================================================================
--- trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2011-04-10 22:20:17 UTC (rev 5661)
+++ trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2011-04-10 22:50:06 UTC (rev 5662)
@@ -544,6 +544,7 @@
<Compile Include="MappingByCode\MixAutomapping\ArrayCollectionTests.cs" />
<Compile Include="MappingByCode\MixAutomapping\BagCollectionTests.cs" />
<Compile Include="MappingByCode\MixAutomapping\ComponentsTests.cs" />
+ <Compile Include="MappingByCode\MixAutomapping\DefaultClassHierarchyRepresentationTests.cs" />
<Compile Include="MappingByCode\MixAutomapping\DictionaryCollectionTests.cs" />
<Compile Include="MappingByCode\MixAutomapping\EntityTests.cs" />
<Compile Include="MappingByCode\MixAutomapping\ManyToOneTest.cs" />
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|