c# - Fluent NHibernate two levels Inheritance Issue -
i want have table per type in 1 level , 1 table hierarchy in level. possible?
description here ->
i have these classes:
public class baseitem { public int id{ get; set; } } public class item : baseitem { } public class child1 : item { } public class child2 : item { } i wanna have tables "baseitem" , "item" , not "child1" , "child2"
i try mappings:
public class baseitemmap : classmap<baseitem> { public baseitemmap() { id(p => p.id).column("baseitemid"); } } public class itemmap : subclassmap<item> { public item() { keycolumn("baseitemid"); //note: line not compiled // because "itemmap" should of "subclassmap" , // can not use "classmap"! discriminatesubclassesoncolumn("itemtype"); } } public class child1map : subclassmap<child1> { public buildingnewsmap() { discriminatorvalue(@"child1"); } } public class child2map : subclassmap<child2> { public buildingnewsmap() { discriminatorvalue(@"child2"); } } help me please!
a bit awkward work. included properties show mapping of them
public class baseitem { public virtual int id { get; protected set; } public virtual datetime created { get; set; } } public class item : baseitem { public virtual string name { get; set; } } public class child1 : item { public virtual int property1 { get; set; } } public class child2 : item { public virtual int property2 { get; set; } } public class itemmap : classmap<item> { public itemmap() { id(p => p.id).column("baseitemid").generatedby.hilo("100"); join("baseitemtable", join => { join.keycolumn("baseitemid"); join.map(x => x.created); }); discriminatesubclassesoncolumn("itemtype"); } } public class child1map : subclassmap<child1> { public child1map() { discriminatorvalue("child1"); map(x => x.property1); } } public class child2map : subclassmap<child2> { public child2map() { discriminatorvalue("child2"); map(x => x.property2); } }
Comments
Post a Comment