FluentNHibernate一对多映射

时间:2011-06-15 11:06:47

标签: nhibernate fluent-nhibernate

我是NHibernate& amp;的新手FNH。以下是我想要实现的基本方案 有两个实体映射器类“Customer”& “订单”

客户

Table("CUSTOMERTEST");
            LazyLoad();
            Id(x => x.CustomerId).Column("CustomerId").GeneratedBy.Sequence("SYS");
            Map(x => x.CompanyName).Column("CompanyName");
            Map(x => x.ContactName).Column("ContactName");
            HasMany(x => x.Orders).KeyColumn("CustomerId").Cascade.All().Table("ORDERTEST").AsBag();

顺序

Table("ORDERTEST");
            LazyLoad();
            Id(x => x.OrderId).Column("OrderId").GeneratedBy.Sequence("SYS");
            References(x => x.OrderedBy).Column("CustomerId");
            References(x => x.ProductDetails).Column("ProductId");
            Map(x => x.OrderDate).Column("OrderDate");
            Map(x => x.ShipToName).Column("ShipToName");

我正在尝试通过客户实体类中的以下属性获取特定客户的订单详细信息。

public virtual IList<Order> Orders {
            get { return new List<Order>(orders).AsReadOnly(); }
            protected set { orders = value; }
        }

但我能够在客户实体对象中获取客户详细信息,但特定客户的“订单”始终为空。我没有做任何更新操作,我只需要从数据库中获取数据。艾米,我做错了什么,或者我们怎么能得到这个?

提前致谢

1 个答案:

答案 0 :(得分:0)

在您的客户类中:

public virtual IList<Order> Orders
        {
            get { return _orders; }
        }

private readonly IList<Order> _orders = new List<Order>();

您也可以添加公共方法来添加或删除订单中的项目