如何在FluentNHibernate上使用EntityBase类映射派生类
我有FluentNHibernate的EntityBase类:如何在FluentNHibernate上使用EntityBase类映射派生类,nhibernate,fluent,Nhibernate,Fluent,我有FluentNHibernate的EntityBase类: public abstract class EntityBase<T> { public EntityBase() { } public static T GetById(int id) { return (T)Hibernate.Session.Get<T>(id); } public virtual void Save()
public abstract class EntityBase<T>
{
public EntityBase()
{
}
public static T GetById(int id)
{
return (T)Hibernate.Session.Get<T>(id);
}
public virtual void Save()
{
using (var transaction = Hibernate.Session.BeginTransaction())
{
Hibernate.Session.SaveOrUpdate(this);
transaction.Commit();
}
}
public static IList<T> List()
{
return Hibernate.Session.CreateCriteria(typeof(T)).List<T>();
}
public static IList<T> ListTop(int i)
{
return Hibernate.Session.CreateCriteria(typeof(T)).SetMaxResults(i).List<T>();
}
public virtual void Delete()
{
using (var transaction = Hibernate.Session.BeginTransaction())
{
Hibernate.Session.Delete(this);
transaction.Commit();
}
}
}
如何将这些类与数据库中的BaseMember表和IndividualMember表进行映射?请参见此处:请参见此处:Fluent NHibernate中有不同类型的继承映射策略。 可以对派生类使用子类映射 策略:表每类层次结构,表每子类和表每具体类 对于每类表层次结构策略,您只需要指定鉴别器列 更多参考:
Fluent NHibernate中有不同类型的继承映射策略。 可以对派生类使用子类映射 策略:表每类层次结构,表每子类和表每具体类 对于每类表层次结构策略,您只需要指定鉴别器列 更多参考:
查看Castles活动记录,其中已完成Baseentity内容:查看Castles活动记录,其中已完成Baseentity内容:
abstract public class BaseMember:EntityBase<BaseMember>
{
public virtual int Id { get; set; }
public virtual string Email { get; set; }
public virtual string Password { get; set; }
public virtual string RecordDate { get; protected set; }
public BaseMember()
{
}
}
public class IndividualMember : BaseMember
{
public virtual int Id { get; set; }
public virtual string FirstName { get; set; }
public virtual string LastName { get; set; }
public virtual string PhoneNumber { get; set; }
public virtual string MobilePhoneNumber { get; set; }
public virtual DateTime BirthDate { get; set; }
public virtual bool Gender { get; set; }
public virtual string ProfileImage { get; set; }
public virtual string AddressDefinition { get; set; }
public virtual string ZipCode { get; set; }
public virtual DateTime RecordDate { get; set; }
public IndividualMember()
{
}
}