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");
}
}


