zoukankan      html  css  js  c++  java
  • 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");
        }
    }
  • 相关阅读:
    C语言源代码——计算任何一天是星期几
    计算任意一天是星期几
    wpf利用线程制作初始界面和关闭窗体特效
    实用的 集合工具类 和 String工具类
    从“关于Java堆与栈的思考”一帖看错误信息的传播
    web.xml 配置中classpath: 与classpath*:的区别
    git的安装-环境变量配置
    解决Oracle安装时报错“SID已在使用”办法
    ORACLE日期时间函数
    Java 开发环境配置
  • 原文地址:https://www.cnblogs.com/TivonStone/p/2762512.html
Copyright © 2011-2022 走看看