I'm attempting to build an ASP.Net MVC 5 web application, using the
NHibernate.AspNet.Identity library (through Nuget), with NHibernate 4 as
the ORM.
Rather than extending the NHibernate.AspNet.Identity.IdentityUser using the
standard "ApplicationUser" where NHibernate has to be used from the
application layer, I want to extend a class I labeled as
"ChromSimGUI.Models.GUI_EntityUser"
The signature for the class:
public class GUI_EntityUsers : IdentityUser,
IComparable<GUI_EntityUsers> { . . . }
The Map By Code class:
public class GUI_EntityUsersMap : JoinedSubclassMapping<GUI_EntityUsers>
{
public GUI_EntityUsersMap()
{
this.Extends(typeof(IdentityUser));
this.Key(k => {
k.Column("UserId");
k.ForeignKey("fk_AspNetUsers");
k.NotNullable(true);
k.OnDelete(OnDeleteAction.Cascade);
});
this.Property(x => x.FirstName);
this.Property(x => x.LastName);
this.ManyToOne(x => x.Address, m => {
m.Column("AddressID");
m.Cascade(Cascade.All);
m.Class(typeof(GUI_EntityAddress));
});
}
I'm attempting to get the mapping for GUI_EntityUsers via:
public static HbmMapping GetGUIModelMappings()
{
System.Type baseEntityType = typeof(IdentityUser);
var allEntities = new List<System.Type> {
typeof(GUI_EntityUsers)
};
var mapper = new ConventionModelMapper();
mapper.IsEntity((t, declared) =>
(baseEntityType.IsAssignableFrom(t) && baseEntityType != t) &&
!t.IsInterface);
mapper.IsRootEntity((t, declared) =>
baseEntityType.Equals(t.BaseType));
mapper.AddMapping<GUI_EntityUsersMap>();
return mapper.CompileMappingFor(allEntities);
}
}
The mappings are configured for a project where I intend all DAL activity
to take place. So, the helper in that class does:
_configuration = new Configuration();
_configuration.Configure();
_configuration.AddDeserializedMapping(MappingHelper.GetIdentityMappings(myEntities),
null); //this gets the NHibernate.AspNet.Identity mappings
_configuration.AddAssembly("ChromSimGUI.Models");
//grabs the hbm.xml mappings
_configuration.AddDeserializedMapping(ChromSimGUI.Models.Helper.MappingHelper.GetGUIModelMappings(),
null);
_sessionFactory =
_configuration.BuildSessionFactory();
In the line compiling the mappings for the GUI_EntityUsersMap, I get an
error: "Ambiguous mapping of ChromSimGUI.Models.GUI_EntityUsers. It was
registered as root-entity and as subclass for table-per-class strategy"
I'm still relatively new to nHibernate, esp the map by code, and
documentation on the web seems to be very limited for this situation. Any
ideas on how to get this to compile?
Thanks
--
You received this message because you are subscribed to the Google Groups
"nhusers" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/nhusers.
For more options, visit https://groups.google.com/d/optout.