• NhibernateReview


    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");
        }
    }
  • 相关阅读:
    [AST Babel] Babel Template
    [HTML5] Layout Reflow & thrashing
    [Cypress] Combine Custom Cypress Commands into a Single Custom Command
    errno , perror,strerror
    使用RMAN和控制文件备份删除归档日志的SHELL脚本--RED HAT 5 LINUX 64
    Documentation/ABI/testing/sysfs-block.txt
    003java面试笔记——【java基础篇】从团八百失败面试总结的java面试题(未完待续)
    How Many Tables
    NTP for Linux
    如何通过预加载器提升网页加载速度
  • 原文地址:https://www.cnblogs.com/TivonStone/p/2762512.html
Copyright © 2020-2023  润新知