代码之家  ›  专栏  ›  技术社区  ›  stuartd saeed

使用公共属性将NHibernate映射到实体

  •  3
  • stuartd saeed  · 技术社区  · 14 年前

    我正在使用IQueryable<gt;建立批处理查询。

    假设我有这个实体和映射:

    public class Calculation 
    {
        public virtual int Id { get; set; }
        public virtual Organisation Organisation { get; set; }
        public virtual Charge Charge { get; set; }
        public virtual TransactionTotal TransactionTotal { get; set; }
    }
    
    public class CalculationMap : ClassMap<Calculation>
    {
        public CalculationMap()
        {
            Id(x => x.Id).GeneratedBy.Identity();
            References(x => x.Organisation).Not.Nullable().UniqueKey("OC");
            References(x => x.Charge).Not.Nullable().UniqueKey("OC");
        }
    

    这是我需要上的课:我用一个视图来给出每个组织的总金额和费用:

    public class TransactionTotal 
    {
        public virtual int Id { get; set; }
        public virtual Organisation Organisation { get; set; }
        public virtual Charge Charge { get; set; }
        public virtual decimal Amount { get; set; }        
    }
    
    public class TransactionTotalMap : ClassMap<TransactionTotal>
    {
        public TransactionTotalMap()
        {
            Id(x => x.Id).GeneratedBy.Identity();
            Table("TransactionTotalsView");
            References(x => x.Charge).Not.Nullable();
            References(x => x.Organisation).Not.Nullable();
            Map(x => x.Amount).Precision(15).Scale(2).Not.Nullable();
        }
    }
    

    HasOne(x => x.TransactionTotal); 但在这种情况下,我需要告诉Nhibernate使用组织和收费属性作为关键。

    编辑:我已经按照@David:

    CompositeId().KeyProperty(x => x.Organisation.Id).KeyProperty(x => x.Charge.Id);
    

    1 回复  |  直到 14 年前
        1
  •  1
  •   kÍ©eÍ£mÍ®pÍ¥ Í© Sitam Jana    14 年前