1.KeyColumn
public class ProductMap : ClassMap<Product> { public ProductMap() { Id(p => p.ProductID); Map(p => p.CreateTime); Map(p => p.Name); Map(p => p.Price); } } public class BookMap : SubclassMap<BookProduct> { public BookMap() { Table("Book"); KeyColumn("ProductID"); Map(p => p.Author); } } public class MobileMap : SubclassMap<MobileProduct> { public MobileMap() { Table("Mobile"); KeyColumn("ProductID"); Map(p => p.Brand); Map(p => p.Number); } }
2.Component
public class User { public virtual int UserID { get; set; } public virtual string UserName { get; set; } public virtual string Password { get; set; } public virtual DateTime CreateTime { get; set; } public virtual UserDetail Detail { get; set; } } public class UserDetail { public virtual User User { get; set; } public virtual int UserID { get; set; } public virtual DateTime LastUpdated { get; set; } public virtual PersonName Name { get; set; } } public class PersonName { public virtual string FirstName { get; set; } public virtual string LastName { get; set; } }
Mapping
public class UserMap : ClassMap<User> { public UserMap() { Id(u => u.UserID).GeneratedBy.Identity() ; Map(u => u.UserName); Map(u => u.Password); Map(u => u.CreateTime); HasOne<UserDetail>(u => u.Detail).Cascade.All().PropertyRef("User"); } } public class UserDetailMap : ClassMap<UserDetail> { public UserDetailMap() { Id(u => u.UserID).Column("UserID").GeneratedBy.Foreign("User"); HasOne<User>(d => d.User).Cascade.All().Constrained(); Map(u => u.LastUpdated).Nullable(); Component<PersonName>(u => u.Name, p => { p.Map(o => o.FirstName).Column("[First Name]"); p.Map(o => o.LastName).Column("[Last Name]"); }); } }
3.
public class User { public virtual int UserID { get; set; } public virtual string UserName { get; set; } public virtual string Password { get; set; } public virtual DateTime CreateTime { get; set; } public virtual UserDetail Detail { get; set; } public ISet<Order> Orders { get; set; } } public class Order { public virtual int OrderID { get; set; } public virtual float Price { get; set; } public virtual OrderState State { get; set; } public virtual DateTime CreateTime { get; set; } public virtual User User { get; set; } public virtual string Address { get; set; } public virtual string Zip { get; set; } public virtual string Coignee { get; set; } }
Mapping
public class UserMap : ClassMap<User> { public UserMap() { Id(u => u.UserID).GeneratedBy.Identity() ; Map(u => u.UserName); Map(u => u.Password); Map(u => u.CreateTime); HasOne<UserDetail>(u => u.Detail).Cascade.All().Fetch.Select(); HasMany<Order>(u => u.Orders).AsSet().KeyColumn("UserID").Cascade.All(); } } public class OrderMap : ClassMap<Order> { public OrderMap() { Id(o => o.OrderID).GeneratedBy.Identity(); Map(o => o.Price); Map(o => o.State).CustomType<OrderState>(); Map(o => o.Address); Map(o => o.Coignee); Map(o => o.CreateTime); Map(o => o.Zip); References<User>(o => o.User).Not.LazyLoad().Column("UserID"); } }