@@ -203,6 +203,18 @@ public void ShouldHandleEverettsWeirdMapping()
203
203
colorSource . Subclasses . ShouldContain ( x => x . Type == typeof ( Sauces . ReallyHotSauce ) ) ;
204
204
colorSource . Subclasses . Count ( ) . ShouldEqual ( 2 ) ;
205
205
}
206
+
207
+ [ Test ]
208
+ public void CanBuildConfigurationForTablePerTypeWithInterfaces ( )
209
+ {
210
+ var model = new PersistenceModel ( ) ;
211
+ model . Add ( new TablePerTypeWithInterfaces . TPTWI_ITopMap ( ) ) ;
212
+ model . Add ( new TablePerTypeWithInterfaces . TPTWI_TopSubclassMap ( ) ) ;
213
+ model . Add ( new TablePerTypeWithInterfaces . TPTWI_IMiddleMap ( ) ) ;
214
+ model . Add ( new TablePerTypeWithInterfaces . TPTWI_MiddleSubclassMap ( ) ) ;
215
+
216
+ model . BuildMappings ( ) ;
217
+ }
206
218
}
207
219
208
220
namespace Thoughts
@@ -365,6 +377,66 @@ public class I_BottomMostMap : SubclassMap<I_BottomMost>
365
377
{ }
366
378
}
367
379
380
+
381
+ namespace TablePerTypeWithInterfaces
382
+ {
383
+ public interface TPTWI_ITop
384
+ {
385
+ int Id { get ; }
386
+ }
387
+ public interface TPTWI_IMiddle
388
+ : TPTWI_ITop
389
+ {
390
+ string MiddleProperty { get ; set ; }
391
+ }
392
+
393
+ public class TPTWI_TopSubclass
394
+ : TPTWI_ITop
395
+ {
396
+ public virtual int Id { get ; protected set ; }
397
+ }
398
+ public class TPTWI_MiddleSubclass
399
+ : TPTWI_TopSubclass , TPTWI_IMiddle
400
+ {
401
+ public virtual string MiddleProperty { get ; set ; }
402
+ public virtual string OwnProperty { get ; set ; }
403
+ }
404
+
405
+ public class TPTWI_ITopMap
406
+ : ClassMap < TPTWI_ITop >
407
+ {
408
+ public TPTWI_ITopMap ( )
409
+ {
410
+ Id ( x => x . Id ) ;
411
+ }
412
+ }
413
+ public class TPTWI_TopSubclassMap
414
+ : SubclassMap < TPTWI_TopSubclass >
415
+ {
416
+ public TPTWI_TopSubclassMap ( )
417
+ {
418
+ KeyColumn ( "Id" ) ;
419
+ }
420
+ }
421
+ public class TPTWI_IMiddleMap
422
+ : SubclassMap < TPTWI_IMiddle >
423
+ {
424
+ public TPTWI_IMiddleMap ( )
425
+ {
426
+ KeyColumn ( "Id" ) ;
427
+ Map ( x => x . MiddleProperty ) ;
428
+ }
429
+ }
430
+ public class TPTWI_MiddleSubclassMap
431
+ : SubclassMap < TPTWI_MiddleSubclass >
432
+ {
433
+ public TPTWI_MiddleSubclassMap ( )
434
+ {
435
+ KeyColumn ( "Id" ) ;
436
+ Map ( x => x . OwnProperty ) ;
437
+ }
438
+ }
439
+ }
368
440
namespace Branching
369
441
{
370
442
public class B_Top
0 commit comments