1.KeyColumn

image

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

image

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.

image

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